2008-10-17 2 views
5

Pochodzę z tła Ruby, jestem przyzwyczajony do pisania całego mojego kodu przy użyciu klas metodami i takimi. Znam javascript całkiem dobrze, ale jestem nowy w jQuery i jego najlepszych praktykach.Jaka jest najlepsza praktyka branżowa i społecznościowa w zakresie kodowania odpowiedniej możliwej do utrzymania czytelnej jQuery dla dużego kodu?

Oczywiście istnieje milion sposobów na symulowanie klas w javascript. Ale jaka jest rzeczywista społeczność jQuery NAPRAWDĘ wykorzystująca w prawdziwym świecie?

Konkretne przykłady byłyby idealne. Lub linki do prawdziwego kodu produkcyjnego. Pomocne będą także linki do fikcyjnego idealnego kodu.

Dzięki!

+0

Wiele ulubionych, ale bez odpowiedzi! –

+0

Mam nadzieję, że nie oznacza to, że jQuery to normalne, że można go napisać jako gigantyczną bryłę kodu bez klas do ponownego użycia lub czegokolwiek. Większość przykładów, które widziałem, sugeruje, że tak jest, ale nie mogę w to uwierzyć. –

Odpowiedz

2
+0

To jest doskonały przykład tego czego NIE szukam. W artykule pokazano, jak wykonać wyjątkowo podstawową aplikację jQuery. Chcę wiedzieć, co ludzie używają do zajęć i zarządzania dużym kodem źródłowym. –

3

tego nie stosuje się w szczególności do jQuery, ale lubię ten obiekt dosłownego składnię symulowanie zajęcia we własnym kodzie.

http://ajaxian.com/archives/show-love-to-the-object-literal

bywam często używają coś takiego (uproszczony) ramowa:

var Widget = { 

    sound:'bleep', 

    load:function(){ 

     // do stuff here that doesn't need to wait until the DOM is ready. 

     // Inside an anonymous function (such as the 'click' handler below), 
     // 'this' loses its scope and no longer refers to the widget object. 
     // To retain a reference to the widget object, assign 'this' to a 
     // variable. I use an underscore... some people like 'self': 
     var _ = this; 

     // when the DOM is ready, run the init "method": 
     $(document).ready(function(){ 
      _.init(); // the underscore now refers to the widget object 
     }); 

    }, 

    init:function(){ 

     var _ = this; 

     // whenever a <p class="noisy"> element is clicked, call makeNoise() 
     $("p.noisy").click(function(){ 
      _.makeNoise(); 
     }); 

    }, 

    makeNoise:function(){ 

     alert(this.sound); // alert 'bleep' 

    } 

}; 

Widget.load(); 

Edit: Więcej informacji na temat korzystania z 'tego' słowa kluczowego, zauważono powyżej:

http://groups.google.com/group/jquery-en/browse_thread/thread/328d07f90467cccc?pli=1

+0

Jest to rzeczywiście całkiem dobrze czytelne. Czy jest to typowy idiom jQuery? –

+0

Widzę to w wielu kręgach jQuery, tak. Chociaż uważam, że ogólna struktura mogłaby być równie dobrze stosowana z innymi bibliotekami. Ponieważ jQuery polega tak bardzo na funkcjach anonimowych, należy uważać na słowo kluczowe "this". Dodałem link w oryginalnym wpisie. – Zac

+1

Wielką wadą składni literalnej obiektu jest to, że nie można tworzyć wielu wystąpień. Co się stanie, jeśli chcę mieć dwa wystąpienia widgetu na ekranie? Sugeruję, abyś użył prawdziwych obiektów, które po prostu kontenerują i używają instancji jQuery. funkcja Widget() {}; Widget.prototype.load() {}; itp. –

0

Mam problemy z tym samym problemem za pomocą jQuery w moim c Projekt Urrent i czuję to samo co jQuery. Jest jak wielkie, tajemnicze łańcuchy metod. A kiedy się powiększa, zrozumienie tego, co napisałem wcześniej, zajmuje więcej czasu.

Jedyny sposób, w jaki udało mi się uzyskać lepszy w utrzymaniu kod jQuery to Module Pattern. Może być przydatny. Możesz także zapoznać się z artykułem o tym samym problemie z Ajaxianem jQuery vs. Prototype: OO JavaScript with or without training wheels.

Powiązane problemy