ここで私自身の質問に答えようとしています...以下に書いたものが間違っている場合は訂正してください!;)
この記事はこれを言います:
拡張する
私の意見では、これはjQueryプラグインを作成するための最も慣用的な方法ではありません。jQuery.fn.extend
代わりにメソッドを
使用しますjQuery.fn.pluginName
:
(function($){
$.fn.extend({
myPlugin: function() {
return this.each(function(){
// do something
});
},
myOtherPlugin: function() {
return this.each(function() {
// do something
});
}
});
})(jQuery);
この構造は、jQueryに多数のプラグインメソッドを追加する必要がある場合に役立ちます。ただし、プラグインがその数のメソッドを追加する必要がある場合は、その実装を構造化するためのより良い方法があるかもしれないと私は主張します。
extendメソッドは、他のJSライブラリから移行するプログラマーによってより多く使用されているように感じます。個人的には、単純な$.fn.pluginName
=
構造の方が読みやすく、jQueryプラグインで通常表示されるものと一致していると思います。
Superfish JSは、上記の引用と同じコードを使用しています。簡単に言えばshowSuperfishUl()
、jQuery名前空間hideSuperfishUl()
の追加プラグインです。$.fn
私は次のように前述の関数をオーバーライドすることができました:
jQuery(function(){
$.fn.showSuperfishUl = function() {
console.log('OMG');
return this;
};
$.fn.hideSuperfishUl = function() {
console.log('BECKY');
return this;
};
jQuery('ul.sf-menu').superfish();
});
次に、この記事は次のように述べています。
必要に応じて、二次機能へのパブリックアクセスを提供する
// plugin definition
$.fn.hilight = function(options) {
// iterate and reformat each matched element
return this.each(function() {
var $this = $(this);
// ...
var markup = $this.html();
// call our format function
markup = $.fn.hilight.format(markup);
$this.html(markup);
});
};
// define our format function
$.fn.hilight.format = function(txt) {
return '<strong>' + txt + '</strong>';
};
オプションオブジェクトで、デフォルトのフォーマットをオーバーライドするためのコールバック関数を提供できる別のプロパティを簡単にサポートすることもできます。これは、プラグインのカスタマイズをサポートするもう1つの優れた方法です。ここに示す手法は、フォーマット関数を実際に公開して再定義できるようにすることで、これをさらに一歩進めています。この手法を使用すると、他の人がプラグインの独自のカスタムオーバーライドを出荷することが可能になります。つまり、他の人があなたのプラグインのプラグインを作成できることを意味します。
結論:
$.fn.extend
とはどちら$.fn.pluginName.function
も類似しており、エンドユーザーが機能を簡単にオーバーライドできるようにします。前者はjQuery名前空間に新しいプラグインを追加します$.fn
が、後者は単一の$.fn.pluginName
名前空間内に含まれる関数です。
まとめとベストプラクティスによると:
プラグインごとに複数の名前空間でjQuery.fnオブジェクトを乱雑にしないでください。
...したがって、「最良の」テクニックを選ぶのはです$.fn.pluginName.function
。