2011-01-29 23 views
6

Jak zarządzać obszarem nazw dla niestandardowej biblioteki JavaScript zależy od jQuery?Przestrzeń nazw JavaScript z jQuery

Czy tworzysz własną przestrzeń nazw, na przykład foo i dodajesz tam swoje obiekty? na przykład foo.myClass, foo.myFunction

A może dodasz swoje obiekty do przestrzeni nazw jQuery? na przykład jQuery.myClass, jQuery.myFunction

Co jest częstszą praktyką i dlaczego?

+1

LOL nie sumują swoje właściwości do nazw jQuerys ... –

+1

Zanurz RequireJS za nieprzestrzeganie jQuery zarządzania wtyczek;) – BGerrissen

Odpowiedz

4

To zależy od tego, co robi biblioteka.

  • Jeśli rozszerzenie funkcjonalności wystąpień obiektów jQuery, można użyć jQuery.fn jak została opisana bardzo ładnie przez @David Titarenco w his answer.

  • Jeśli tworzysz narzędzia, które mają być postrzegane jako dodatki do podanych w window.jQuery, to nie widzę problemu z używaniem tej przestrzeni nazw (o ile jesteś ostrożny z nazywaniem).

  • Jeśli jest naprawdę osobne biblioteki, która jest nie ma być postrzegane jako rozszerzenie jQuery, ale opiera się na funkcjonalność z jQuery, to na pewno korzystać z własnych nazw.

7

This article omawia pisanie wtyczek/bibliotek jQuery w rozdzierających szczegółach.

czego nie robić:

(function($){ 

    $.fn.tooltip = function(options) { // THIS }; 
    $.fn.tooltipShow = function() { // IS }; 
    $.fn.tooltipHide = function() { // BAD }; 
    $.fn.tooltipUpdate = function(content) { // !!! }; 

})(jQuery); 

Co robić:

(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); 

Ja też napisałem w ubiegłym roku blog post o różnych metod dla przestrzeni nazw w JavaScript (non-jQuery podobne).

+0

Twoja witryna została porwana. Strony pod adresem dvt.name przekierowują do miejsc baaaaddd. –

Powiązane problemy