12.AOP(アスペクト)の適用
概要
hifiveではコントローラとロジックのメソッドにアスペクトを適用(AOP)することができます。
AOPのメリットは「コードに変更を加えずに新たな処理を追加すること」ができる点です。
例えば既存のメソッドを修正せずにログ出力するようにしたり、そのメソッドの実行時間の計測ができるようになります。
アスペクトの適用方法
ステップ3で作成したHello Worldにアスペクトを適用します。
1. h5preinit.jsというファイルを新しく作成し、h5.jsよりも先に読み込ませます。
<script src="h5preinit.js"></script>
<script src="h5.js"></script>
2. h5preinit.jsは内容は以下の通りです。
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.コントローラ連携