Javascript in sich abgeschlossene Sandbox-Ereignisse und clientseitiger Stack

8

Ich bin dabei, eine JSF-Webanwendung in eine REST- und hauptsächlich JS-Modulanwendung zu verschieben.

Ich habe "skalierbare Javascript-Anwendungsarchitektur" von Nicholas Zakas im YUI-Theater (ausgezeichnetes Video) angeschaut und ich habe viel von dem Vortrag mit gutem Erfolg umgesetzt, aber ich habe einige Fragen:

  1. Ich fand die Vorlesung ein wenig verwirrend in Bezug auf die Beziehung zwischen Modulen und Sandboxen, einerseits, nach meinem Verständnis, sollten Module nicht von etwas außerhalb ihrer Sandbox beeinflusst werden und deshalb veröffentlichen sie Ereignisse über die Sandbox (und nicht über den Core, da der Core zum Verstecken der Basisbibliothek dient), aber jedes Modul in der Anwendung bekommt eine neue Sandbox? Sollte die Sandbox die Ereignisse nicht auf die verwendeten Module beschränken oder sollten Ereignisse über die Seite veröffentlicht werden? z.B. : Wenn ich zwei editierbare Tabellen habe, aber jede in einer anderen Sandbox enthalten soll und ihre Ereignisse nur die Module in dieser Sandbox betreffen, so etwas wie ein Meldungsfeld pro Tabelle, das ein anderes Modul / Widget ist, wie kann ich das mit Sandbox machen pro Modul, natürlich kann ich die Ereignisse mit der Modulid voranstellen, aber das erzeugt eine Kopplung, die ich vermeiden will ... und ich möchte Module nicht als ein Modul pro Kombination zusammenpacken, da ich bereits 6-7 Module habe.

  2. Während ich die Basisbibliothek für kleine Dinge wie ID-Selektor usw. verstecken kann, würde ich immer noch die Basisbibliothek für Modulabhängigkeiten und das Laden von Ressourcen verwenden und so etwas wie YUI loader oder dojo.require verwenden Ich verstecke die Basisbibliothek, aber die Module selbst werden von der Basisbibliothek definiert und geladen ... scheint mir etwas seltsam zu sein.

  3. -Bibliotheken geben keine einfachen js-Objekte zurück, sondern wickeln sie normalerweise z. : Sie können etwas wie $$ ('. Classname') tun. Jeder (.., der den Code viel reinigt, macht es keinen Sinn, die Basis zu wickeln und dann im Modul eine Abhängigkeit für die Basisbibliothek durch Ausführen von .Each zu erstellen aber nicht mit diesen Funktionen macht eine Menge Code geschrieben, die weggelassen werden kann ... und die Implementierung dieser Funktionalität ist sehr anfällig für Fehler.

  4. Hat jemand Erfahrung damit, einen Front-Side-Stack dieser Reihenfolge zu erstellen? Wie einfach ist es, eine Basisbibliothek zu ändern und / oder Module aus verschiedenen Bibliotheken zu verwenden, die yui-Datentabelle verwenden, aber die Formularvalidierung mit Dojo durchführen ...?

  5. Etwas von einer Kombination von 2 + 4, wenn Sie etwas wie ich gesagt tun und laden Dojo Formular Validierung Widgets für Eingaben über YUI Loader würde das Dojocore ist ein Modul und das Formular-Modul ist davon abhängig?

Danke.

    
Amnon 02.09.2010, 15:29
quelle

1 Antwort

3

Wir verwenden dieses Muster stark in unseren Anwendungen. Sehen Sie sich das Buch JavaScript Patterns von Stoyan Stefanov an, um zu erfahren, wie Sie das Sandbox-Muster implementieren können. Im Grunde sieht es ungefähr so ​​aus:

%Vor%     
Eli 24.04.2011 04:00
quelle