カスタムJavaScriptライブラリのネームスペースを管理する方法はjQueryによって異なりますか?jQueryを使用したJavaScriptネームスペース
あなた自身の名前空間を作成しますか。たとえばfoo
とし、そこにオブジェクトを追加しますか?例えばfoo.myClass, foo.myFunction
jQueryの名前空間にオブジェクトを追加しますか?例えばjQuery.myClass, jQuery.myFunction
どちらがより一般的な習慣であり、なぜですか?
カスタムJavaScriptライブラリのネームスペースを管理する方法はjQueryによって異なりますか?jQueryを使用したJavaScriptネームスペース
あなた自身の名前空間を作成しますか。たとえばfoo
とし、そこにオブジェクトを追加しますか?例えばfoo.myClass, foo.myFunction
jQueryの名前空間にオブジェクトを追加しますか?例えばjQuery.myClass, jQuery.myFunction
どちらがより一般的な習慣であり、なぜですか?
これはライブラリの機能によって異なります。
あなたはjQueryのオブジェクトのインスタンスの機能を拡張している場合his answerで@David Titarencoで非常にうまく説明したように、あなたはjQuery.fn
使用すると思います。
window.jQuery
で提供されているものの追加であると見なされるユーティリティを作成している場合は、その名前空間の使用に問題はありません(名前付けに注意している限り)。
ではないでは、jQueryの拡張機能と見なされていて、jQueryの機能に依存しているので、間違いなく独自の名前空間を使用してください。
This articleは、jQueryプラグイン/ライブラリを非常に細かく記述しています。いけないこと
:
(function($){
$.fn.tooltip = function(options) { // THIS };
$.fn.tooltipShow = function() { // IS };
$.fn.tooltipHide = function() { // BAD };
$.fn.tooltipUpdate = function(content) { // !!! };
})(jQuery);
何をすべきか:
(function($){
var methods = {
init : function(options) { // THIS },
show : function() { // IS },
hide : function() { // GOOD },
update : function(content) { // !!! }
};
$.fn.tooltip = function(method) {
// Method calling logic
if (methods[method]) {
return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
}
};
})(jQuery);
私はまた、JavaScriptの(非jQueryの関連)に名前空間をするための様々な方法については、昨年blog postを書きました。
あなたのサイトが乗っ取られました。 dvt.nameのページがbaaaadddの場所にリダイレクトされます。 –
LOLは非jQueryプラグイン管理のためのRequireJSに... jQuerys名前空間に –
ダイブをあなたの特性を追加しません。) – BGerrissen