2010-11-04 11 views
5
  1. Ich mag würde wissen, was die Unterschied (Vorteile/Nachteile) zwischen folgenden Mustern.
  2. Wie kann ich Submodule basierend auf dem Modulmuster erstellen?

Mein Ziel ist es meine js zu haben organisiert in mehrere Dateien das sind faul geladen sondern ein Namespace haben.JavaScript-Modul Muster/Organisation/Submodule

Zum Beispiel:

SO.global (global.js) SO.global.registration (registration.js) < - Last

VS.

var SO = (function() { 

    var CONSTANT = 'Z'; 

    function createX(){ 
     alert("create X"); 
    } 

    function getY(){ 
     alert("get Y"); 
    } 

    return { 
     create:createX, 
     get:getY 
    } 

}()); 
+2

es gibt keinen Unterschied zwischen den beiden Beispielen ist .... ein Pars um ihn herum hat, aber sie sh könnte dasselbe tun. – rob

+0

Die zusätzlichen Parens im zweiten Beispiel werden von einigen Leuten verwendet, um anzuzeigen, dass der Funktionsausdruck sofort aufgerufen wird. –

+0

Ich denke, dass die Parens für diese Konvention am falschen Ort sind. Ich glaube, es wird normalerweise geschrieben als (function() {...})() – Gopherkhan

Antwort

5

Haben Sie Require.JS in Betracht gezogen? Es wird versucht, die folgende Lösung zu bieten:

  • Irgendeine Art von # include/import/erfordern
  • Fähigkeit für Entwickler geschachtelte Abhängigkeiten
  • einfache Bedienung zu laden, aber dann durch einen Optimierungs-Tool unterstützt die Bereitstellung hilft

Require.JS implementiert die Module/Asynchronous Definition spec durch common.js definiert

3

Hier ist gut zu lesen: http://snook.ca/archives/javascript/no-love-for-module-pattern, und ein anderer: http://lamb.cc/blog/category/javascript/

YUI es eifrig benutzt, wie ich, ich habe keine Situationen nicht gefunden, wo ich durch sie eingeschränkt wurde, und es integriert sich gut mit der YUI-Abhängigkeitslader für benutzerdefinierte Module.

(Leider merke ich, dies ist keine vollständige Antwort, aber es gibt einige untampered Informationen für Sie)

+0

Diese Links haben gerade ein paar Monate in meiner "skills-todo" -Pipeline hinzugefügt. – cherouvim

+0

Der erste Link ist seltsam. Es ist, als würde er gegen die Verwendung privater Variablen argumentieren. – david

+0

@ cherouvim, einverstanden, ich bin über ... 70% des Weges durch den Hirn-Freak beteiligt (für mich sowieso) – danjah