Erstellen Sie eine lose gekoppelte & multi-page-JS-Anwendung mit Core(Mediator) / Sandbox(Fassade) / Modul-Muster — Beratung?

Baue ich eine multi-Seite-javascript-Anwendung. Ich habe viel gelesen in design-patterns und der Erstellung von Anwendungen mit einem Core - /Fassade - /Modul-Ansatz w/lose Kopplung (pub/sub Ritzen zu Veranstaltungen).

Habe ich ein ziemlich gutes system ausgearbeitet, das minimiert & vereint alle meine Modul-Dateien & Verwandte Abhängigkeiten in einer externen javascript-Datei bei der Bereitstellung. Minimierung der zusätzlichen HTTP-Anfragen für meine Anwendung ist ein design-Ziel -- also ich bin nicht allzu interessiert an der AMD (asynchronous module definition).

Ich bin mit den Richtlinien delinitated in Nicholas Zakas ' s Vortrag,
Scalable JavaScript Application Architecture

http://www.youtube.com/watch?v=vXjVFPosQHw

&&

Addy Osmani ist Patterns For Large-Scale JavaScript Application Architecture
http://addyosmani.com/largescalejavascript/

&&

Diese premium-Lernprogramm von Andrew Burgess von Nettuts, Schreiben Modulare JavaScript -
http://marketplace.tutsplus.com/item/writing-modular-javascript/128103/?ref=addyosmani&ref=addyosmani&clickthrough_id=90060087&redirect_back=true

Meine Frage, ist die Beratung auf, wie man über die Verwaltung von verschiedenen Seiten dieser Anwendung & Ihre zugehörigen Module. Ich bin auch mit Backbonejs Router-Klasse w/ballupton ist History.js Bibliothek zu manipulieren, die HTML5 history/Zustand-API und das dynamische laden von Seiten ohne refresh, während die Aufrechterhaltung der Abwärtskompatibilität für ältere Browser, die keine Unterstützung für die HTML-Status-API. Alle meine Seiten teilen sich eine gemeinsame code-Basis (single-minified & komprimierte js-Datei).

Hier ist ein überblick von der Struktur, die ich mir vorstelle in meiner Anwendung:
Erstellen Sie eine lose gekoppelte & multi-page-JS-Anwendung mit Core(Mediator) /Sandbox(Fassade) /Modul-Muster — Beratung?

Es ist im wesentlichen ein hybrid-Ansatz. Die Obere Hälfte besteht aus einem Kern/Fassade/Modul-Muster mit diskreten Modulen, die nicht direkt interagieren mit einander und veröffentlichen/abonnieren von Benachrichtigungen über die Fassade.

Die untere Hälfte besteht aus meiner vorgeschlagenen Struktur Anwendung, die Sie informiert ein "main-controller", wenn der Staat/url-änderungen, die Haupt-controller führt alle globalen Operationen (z.B. initialisieren der header & sidebar-Menü von meinem UI, wenn nicht bereits initialisiert ist) und weist den relevanten sub-control zu betreiben es init () - Methode (genauso wie der Aufruf von destroy(); auf jedem controller, der zuvor geladen wurde). Jeder sub-controller (entspricht ex: home-Seite, Kalender-Seite, reservations-Seite, etc.) cherry-picks Module aus dem pool der zur Verfügung stehenden Module und initialisiert Sie.

Ist das ein guter Ansatz oder bin ich da auf einem schlechten Weg? Ich kann sehen, sind noch die Module unabhängig von einander, was eine gute Skalierbarkeit.

Habe ich auch als nur die Behandlung der Router & Controller als separate Module und mit Ihnen zu veröffentlichen - /abonnieren-um den Kern, und jeder controller irgendwie initialisiert die notwendigen Module, die es braucht für seine Seite.

  • Ihr argument für die Verwendung von AMD zu Modularisieren Ihre Anwendung ist fehlerhaft; verwenden des r.js Optimierer ist es trivial, erstellen Sie ein einzelnes Paket aus, um Ihre Module, wenn Sie, zum Beispiel, requirejs während der Optimierungs-phase.
  • Neue Konzepte, die wir derzeit verwenden, um meine Antwort.
InformationsquelleAutor Casey Flynn | 2012-10-31
Schreibe einen Kommentar