Circular Abhängigkeiten in Modulen mit requireJs

9

Lesen der requirJs-Dokumentation,
Um die Circular Dependencies zu beheben, wird empfohlen, exports zu verwenden, um ein leeres Objekt für das Modul zu erstellen, das sofort für andere Module verfügbar ist.

Ich versuche diesen Code, aber es scheint nicht zu funktionieren. Was ist falsch?

P.S .: lies die Kommentare, um die Ausgabe zu sehen,
vor allem das B-Modul innerhalb von setTimeout Anruf.

%Vor% %Vor% %Vor%     
Lorraine Bernard 29.06.2012, 15:41
quelle

3 Antworten

1

Sie sollten die synchrone Version von require() in Ihrem B-Modul verwenden können, um auf das Modul "A" zuzugreifen:

%Vor%     
Stepan Riha 24.04.2014 23:05
quelle
0

Ich habe häufig zirkuläre Probleme mit AMD-Modulen, um einen Anwendungskern zu erstellen, der sowohl viele Module enthält als auch Konfigurations- oder andere nützliche Objekte für diese Module enthält.

Ich habe heute etwas experimentiert und das scheint ziemlich gut zu funktionieren.

%Vor%

Die Objekte sind beide === gleich, was sehr vielversprechend erscheint.

BEARBEITEN:

Die obige Methode funktioniert nicht, wenn sie optimiert ist. Hier ist eine andere Methode, die (ungeprüft) möglicherweise: Ссылка

%Vor%     
SimplGy 16.07.2013 00:16
quelle
0

Eine Option wäre, das Modul selbst nicht zurückzugeben, sondern eine Funktion, die das Modul instanziiert (in diesem Beispiel wäre es ein Konstruktor wie in Typoskript definiert, unten ist der generierte js-Code ). Beachten Sie, dass Schnittstellen keinen .js-Code generieren)

  • Datei IA.ts

    %Vor%
  • Datei IB.ts

    %Vor%
  • Datei ClassA.ts

    %Vor%
  • Datei ClassB.ts

    %Vor%
  • Datei MainTest.ts

    %Vor%

Und der generierte JS-Code:

  • Datei ClassA.js

    %Vor%
  • Datei ClassB.js

    %Vor%
  • Datei MainTest.js

    %Vor%

schließlich wird die Ausgabe sein:

Ich bin ClassB

Ich bin ClassB

Ich bin ClassA

Ich bin ClassA

    
Leo 21.03.2014 16:47
quelle