require.js + backbone.js: Wie strukturiere ich Module, die eine Initialisierungsfunktion haben?

Ich habe eine Anwendung mit drei Seiten (doppelseitige Benutzeroberflächen). Die Seiten haben ähnliche, aber nicht identische Funktionen.

Also möchte ich Javascript-Module haben, die die allgemeine Funktionalität bieten. Dann kann jede Seite Teile der allgemeinen Funktionalität anpassen / überschreiben.

Ich benutze backbone.js und mache Folgendes:

Laden Sie die Dateien mit den gängigen Modellen, Ansichten, Sammlungen usw.Laden Sie app-spezifische Dateien, die Teile von Schritt 1 anpassen / überschreibenRufen Sie eine init () - Funktion auf, die alle erforderlichen Modelle / Ansichten / Sammlungen instanziiert

Momentan lagere ich meine Module in einem Modulcontainer, der ungefähr so ​​aussieht:https://stackoverflow.com/a/9426071 Jedes Modul hat eine optionale init () -Funktion, die von meiner main init () -Funktion ausgeführt wird.

Beispiel:

Ich habe eine Datei namens results.js. Es definiert das gemeinsame Modell / Sammlung / Ansicht von Suchergebnissen. In seiner init () -Funktion ist alles instanziiert, aber diese Funktion wird noch nicht aufgerufen:

var resultView = new ResultView()

Dann füge ich myApp.js hinzu und Teile der Ansicht werden überschrieben.

Die Hauptfunktion init () ruft results.js init () auf, die die neue Ansicht instanziiert. Alles funktioniert schön, glatt und trocken.

Jetzt möchte ich zu require.js anstatt zu meinem eigenen Modul-Container wechseln und mich fragen, wie ich meinen Code organisieren soll.

Ich könnte entweder alle Modelle / Ansichten usw. in myApp.js anstelle der init () - Funktion jedes Moduls instanziieren. Dies würde bedeuten, viel sich wiederholenden Code zu haben.

Oder ich könnte an jedem Modul mit seiner init () - Funktion festhalten und diese init () - Funktionen in myApp.js aufrufen. Das gefällt mir nicht, weil ich meine Module für jede meiner drei Seiten dreimal explizit aufschreiben müsste:

require(['module1', 'module2', 'module3', ...],
  function(module1, module2, module3, ...) {
    var init = function() {
      module1.init();
      module2.init();
      module3.init();
      ...
    }
    return {init: init};
  }
);

Für 10 Module plus eine Reihe von Bibliotheken ist dies nicht schön und trocken. Gibt es eine Möglichkeit, auf alle Module zuzugreifen (Schleife über alle Module), für die "require.js" gilt?

Oder fehlt mir etwas, sollte ich meinen Code anders strukturieren?

Alle Hinweise / Gedanken sind willkommen,

Michael

Antworten auf die Frage(1)

Ihre Antwort auf die Frage