2008-10-17 2 views
5

Ausgehend von einem Ruby-Hintergrund, bin ich es gewohnt, meinen ganzen Code mit Klassen mit Methoden und so zu schreiben. Ich kenne Javascript ganz gut, aber ich bin neu bei jQuery und seinen Best Practices.Was ist die beste Praxis der Branche und der Community für das Codieren von ordnungsgemäß lesbarem jQuery für eine große Codebasis?

Offensichtlich gibt es eine Million Möglichkeiten, Klassen in Javascript zu simulieren. Aber was nutzt die tatsächliche jQuery Community wirklich in der realen Welt?

Spezifische Beispiele wären ideal. Oder Links zu echtem Produktionscode. Links zu fiktivem Idealcode wären ebenfalls hilfreich.

Danke!

+0

Viele Favoriten, aber keine Antworten! –

+0

Ich hoffe natürlich, dass dies nicht bedeutet, dass es normal ist, dass jQuery als ein riesiger Klumpen Code ohne wiederverwendbare Klassen oder irgendetwas geschrieben wird. Die meisten Beispiele, die ich gesehen habe, deuten darauf hin, dass es der Fall ist, aber ich kann mich nicht dazu bringen, es zu glauben. –

Antwort

2

würde ich hier nach Inspiration beginnen:

http://errtheblog.com/posts/73-the-jskinny-on-jquery

+0

Dies ist ein perfektes Beispiel für das, was ich nicht suche. Der Artikel zeigt, wie man extrem einfache jQuery macht. Ich möchte wissen, was Leute für Klassen verwenden und eine große Codebasis verwalten. –

3

Dies gilt nicht speziell auf jQuery, aber Ich mag die Objektliteral Syntax für die Klassen in meinem eigenen Code zu simulieren.

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

ich neigen oft dazu, so etwas wie dieses (vereinfacht) Framework verwenden, um:

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:

: Weitere Informationen über die Verwendung des 'this' Schlüsselwort, wie oben erwähnt

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

+0

Das ist in der Tat ziemlich gut lesbar. Ist das ein gängiges jQuery-Idiom? –

+0

Ich sehe es oft in den alten jQuery-Kreisen, ja. Obwohl ich glaube, dass die allgemeine Struktur genauso gut mit anderen Bibliotheken verwendet werden kann. Da jQuery so stark auf anonyme Funktionen angewiesen ist, müssen Sie auf das Schlüsselwort 'this' achten. Ich habe einen Link im ursprünglichen Beitrag hinzugefügt. – Zac

+1

Ein großer Nachteil bei der Objekt-Literalsyntax ist, dass Sie nicht mehrere Instanzen erstellen können. Was ist, wenn ich zwei Instanzen von Widget auf dem Bildschirm haben möchte? Ich schlage vor, Sie gehen mit realen Objekten, die einfach Container und jQuery-Instanzen verwenden. Funktion Widget() {}; Widget.prototype.load() {}; etc. –

0

Ich habe Probleme mit dem gleichen Problem mit jQuery in meinem c aktuelles Projekt und ich fühle mich gleich über jQuery. Es ist wie große kryptische Methodenketten. Und wenn es größer wird, braucht es mehr Zeit, um zu verstehen, was ich vorher geschrieben habe.

Der einzige Weg, den ich gefunden habe, mehr wartbare jQuery-Code zu machen ist Module Pattern. Vielleicht kann es nützlich sein.Auch Sie können Ajaxian jQuery vs. Prototype: OO JavaScript with or without training wheels Artikel über das gleiche Problem betrachten.

Verwandte Themen