jQuery UI なぜウィジェットライブラリ(Widget Factory)を使うのか
jQuery プラグインの作成は、jQuery.prototype(通常は$.fn)にメソッドを追加するのと同じくらい簡単で、いくつかの簡単なルールに従う必要があります。例えば返すthis。では、なぜウィジェットライブラリ(Widget Factory)が存在するのでしょうか?
この章では、ウィジェットライブラリ(Widget Factory)の利点を説明し、いつ使うべきか、そしてなぜ使うべきかを理解します。
ステートレス vs. ステートフルプラグイン
ほとんどの jQuery プラグインはステートレスで、いくつかのアクションを実行するだけでタスクが完了します。例えば、あなたが.text( "hello" )要素のテキストを設定する場合、インストールフェーズはなく、結果は常に同じです。このタイプのプラグインは、単に jQuery のプロトタイプを拡張するだけです。
しかし、一部のプラグインはステートフルであり、ライフサイクル全体を持ち、状態を維持し、変化に反応します。これらのプラグインは、初期化と状態管理(場合によっては破棄)のために、大量の専用コードを必要とします。そのため、ステートフルプラグインを作成するためのテンプレートが登場しました。さらに悪いことに、各プラグインの作者がプラグインのライフサイクルと状態を異なる方法で管理しているため、プラグインごとに異なる API スタイルが生まれました。ウィジェットライブラリ(Widget Factory)はこれらの問題を解決することを目的としており、テンプレートを排除し、プラグインに一貫した API を提供します。
一貫した API
ウィジェットライブラリ(Widget Factory)は、ウィジェットの作成と破棄、オプションの取得と設定、メソッドの呼び出し、およびウィジェットがトリガーするイベントのリッスン方法を定義します。ウィジェットライブラリ(Widget Factory)を使ってステートフルプラグインを作成すると、定義された標準に自動的に準拠し、新しいユーザーがあなたのプラグインを使いやすくなります。さらに、ウィジェットライブラリ(Widget Factory)は、インターフェースを定義する機能も実現できます。ウィジェットライブラリ(Widget Factory)が提供する API にまだ慣れていない場合は、次を参照してください。ウィジェットライブラリ(Widget Factory)の使い方。
初期化時にオプションを設定する
オプションを受け付けるプラグインを作成するときは、できるだけ多くのオプションに対して defaults を定義する必要があります。そして初期化時に、ユーザーが提供したオプションと defaults をマージします。また、defaults を公開することで、ユーザーがデフォルト値を変更できるようにすることもできます。jQuery プラグインでは、一般的なパターンは次のようになります:
$.fn.plugin = function( options ) {
options = $.extend( {}, $.fn.plugin.defaults, options );
// Plugin logic goes here.
};
$.fn.plugin.defaults = {
param1: "foo",
param2: "bar",
param3: "baz"
};
ウィジェットライブラリ(Widget Factory)もこの機能を提供し、さらに改良されています。ウィジェットライブラリ(Widget Factory)を使用すると、次のようになります。
$.widget( "ns.plugin", {
// Default options.
options: {
param1: "foo",
param2: "bar",
param3: "baz"
},
_create: function() {
// Options are already merged and stored in this.options
// Plugin logic goes here.
}
});
その他の拡張