開発者ブログ
チュートリアル(基本編) » 12.AOP(アスペクト)の適用

12.AOP(アスペクト)の適用

Last modified by fukudayasuo on 2013/11/26, 11:08

概要

hifiveではコントローラとロジックのメソッドにアスペクトを適用(AOP)することができます。
AOPのメリットは「コードに変更を加えずに新たな処理を追加すること」ができる点です。
例えば既存のメソッドを修正せずにログ出力するようにしたり、そのメソッドの実行時間の計測ができるようになります。

アスペクトの適用方法

ステップ3で作成したHello Worldにアスペクトを適用します。

1. h5preinit.jsというファイルを新しく作成し、h5.jsよりも先に読み込ませます。

<!-- hifiveのpreinitイベントで処理をさせるために、h5.jsより先に読み込む -->  
<script src="h5preinit.js"></script>  
<script src="h5.js"></script>

2. h5preinit.jsは内容は以下の通りです。

$(document).bind('h5preinit', function() {  
   var aspect = {  
        target: 'HelloWorldController',  
        interceptors: h5.core.interceptor.lapInterceptor,  
        pointCut: '#btn click'  
    };  
  
    h5.settings.aspects = [aspect];  
});  
  • アスペクトはhifiveの独自イベントh5preinitイベントで指定します。
    詳細は後述します。
  • 2行目から6行目までがアスペクトの定義です。アスペクトはターゲットとインターセプタ、ポイントカットで構成されます。
    それぞれの詳細については後述します。
    • ターゲットはどのコントローラ、ロジックにインターセプタを適用するかを指定します。、ここでは名前が"HelloWorldController"であるコントローラに適用しています。
    • インターセプタとは適用したい処理のことです。ここではhifiveが用意しているイベントハンドラが終了するまでの時間を計測しコンソールに出力する実行時間計測用インターセプタを指定しています。
    • ポイントカットはインターセプタをどこに適用するかを指定します。ここでは"#btn click"メソッドに適用しています。

動作確認

F12で開発者ツールを開き、"hello world!"ボタンをクリックすると、コンソールに実行時間が表示されます。
"h5preinit.js"のインクルードをコメントアウトすると、コンソールに出力されなくなります。

チュートリアル/ステップ13-1

参照

次のステップ⇒チュートリアル13.コントローラ連携


Copyright (C) 2012-2017 NS Solutions Corporation, All Rights Reserved.