Ich bin in der folgenden Situation.
Ich verwende requireJs, um Modul zu laden, und ich möchte keine globalen Variablen verwenden.
Die main.js ist dafür verantwortlich, den Router zu laden.
Dann lädt der Router die App und die App lädt mehrere SubApps.
Nachdem alles initialisiert wurde, benötigt die SubApps router
, um router.navigate
zu erstellen.
Hier das Schema:
%Vor%Dann habe ich ein Problem mit zirkulären Abhängigkeiten und aus diesem Grund ist der Router in subApp nicht definiert.
Was ist der beste Weg, meinen Code zu reorganisieren oder dieses Problem zu beheben? Gibt es ein Beispiel dafür?
das Schema:
%Vor%hat Recht.
Wenn Sie backbone.marionette verwenden, um Zugriff auf den Router von der App und SubApp, ohne global var
zu verwenden, sollten Sie die App im Router auf diese Weise starten:
Subapp kann Ereignisse auslösen, die der Router handhabt, anstatt eine explizite Abhängigkeit vom Router zu haben
In meinem Projekt verwende ich die folgende Abhängigkeit: main.js - & gt; App - & gt; Router - & gt; Unteranwendung.
In app.js erstelle ich eine einzelne globale Variable, die einen Zeiger auf meine App enthält:
%Vor%Dies macht es extrem einfach, von überall auf die Regionen meiner App zuzugreifen und globale Statusinformationen in einem Namensraum zu speichern.
Ich habe es zuerst ohne die globale App versucht, aber letztendlich aufgegeben und fand diesen Ansatz viel flexibler.
Tags und Links javascript requirejs backbone.js marionette backbone-routing