Die Identifizierung des SeaJS -Github -Moduls war relativ klar. Aber es ist nicht alles behandelt, insbesondere wenn Sie von Hand geschrieben sind [Modul-ID] und [Modulabhängigkeit] oder wenn Sie Ihr eigenes Automatisierungswerkzeug zum Transport schreiben (PS: SPM scheint nicht sehr anpassungsfähig zu sein und nicht einfach zu sein zu sein Verwenden Sie schließlich, dass jede Verzeichnisstruktur des Projekts sehr unterschiedlich ist und nicht einfach zu ändern ist. und die ID -Parsing -Regeln müssen gründlich verstanden werden.
Anmerkungen:
1. Die Identifikatorin der obersten Ebene ist immer relativ zum Grundweg der Basis analysiert.
2. Der absolute Pfad und der Wurzelpfad sind immer relativ zur aktuellen Seite analysiert.
3. Die relativen Wege in Forderung und Forderung. Async sind relativ zum aktuellen Modulpfad analysiert.
4. Der relative Weg in SeaJs.use ist immer relativ zur aktuellen Seite analysiert.
In SeaJs kann die Modul -ID grob in drei Typen unterteilt werden: [Relative Identifier], [Identifikator der obersten Ebene] und [normaler Pfad].
Zu den gewöhnlichen Pfaden gehören "absoluter Pfad", "Root Path" usw.
Hier konzentrieren wir uns auf [relatives Logo] und [Top -Logo].
Relative Identifikatoren beziehen sich auf "./", "../", wie: "./othermodule", "../lib/base".
Identifikatoren der obersten Ebene beziehen sich auf Dateien oder Verzeichnisse (können Folgendes enthalten: Buchstaben, -, _), wie z. B. "App/Widget/Select"
Es gibt drei Orte, an denen eine Modul -ID erforderlich ist:
Die Codekopie lautet wie folgt: Define ("ID (1)", ["../ ID2 (2)"], Funktion (erfordern, exportieren, modul) {
var modulea = required ('./ modulea (3)');
})
HINWEIS: Unabhängig davon, ob es sich um den ersten Parameter [Modul -ID] oder der zweite Parameter [Modul -ID] oder die [zuverlässige Modul -ID] handelt, ist der endgültige Vergleichsstandard [Parsed Datei URI].
Daher können diese drei Orte, an denen IDs geschrieben werden müssen, in irgendeiner Weise geschrieben werden, und solange sie schließlich in dieselbe URI analysiert werden, gelten sie als das gleiche Modul.
Während des Parsens der ID wird sie im Voraus durch Alias und Pfade verarbeitet, die in SeaJs.config definiert sind.
Regeln der Basispfadauflösung
(Schicht 1 hängt der Pfad selbst nicht von Einstellungen ab)
1. [Identifizierung der obersten Ebene] kann nicht verwendet werden, da die Identifizierung der obersten Ebene relativ zum Grundpfad der Basis analysiert wird, sodass die Basis selbst nur [relative Identifikation] oder [Wurzelpfad] usw. verwenden kann.
2. Der Standardweg der Basis ist das SeaJS -Verzeichnis.
3.. [Relative Identifikation]: Analysieren Sie relativ zur aktuellen Seite.
Pfadauflösung Regeln auf Pfaden
(Schicht 1 hängt der Pfad selbst nicht von Einstellungen ab)
1. [Relative Identifikation]: Wo zu zitiert werden, hängt der relative analytische Ort von der angeführten Stelle ab und folgt den lokalen Regeln.
2. Die Felder in den Pfaden werden in Form von Variablen ersetzt, in denen sie verwendet und dann analysiert werden.
Zum Beispiel:
Kopieren Sie den Code wie folgt: // Code Block (1)
// Pfaddefinition:
SeaJs.config ({{{
Basis: "./ App/SRC",
Weg:{
"a": "../ lib", // (1) relativer Weg
"lib": "Pfad/to/lib", // (2) Logo auf dem oberen Level
"L2": "/lib" // (3) Wurzelpfad
}
});
// Modul mod/m/m.js:
...
erfordern ("a/jQuery");
// => konvertieren Sie: "../../lib/jquery"
// => Laden: mod/lib/jQuery (Spezialnote 1)
...
// Modul mod/f.js:
...
erfordern ("a/jQuery");
// => konvertieren Sie: "../../lib/jquery"
// => Laden: lib/jQuery (Spezialnote 2)
...
Pfadauflösung Regeln in Alias
(In Schicht 2 kann der Pfad selbst von den Pfadeinstellungen abhängen)
1. Die Alias -Regeln ähneln den Pfaden, und der Alias -Pfad kann auch "Variablen" auf Pfaden verwenden
2. Erinnerung: Versuchen Sie, [Identifizierung der obersten Ebene], [Wurzelpfad] und [absoluter Pfad] in Pfaden und Alias zu verwenden, und verwenden Sie nicht [Relative Identifikation], da Module unterschiedlicher Tiefen in verschiedene Pfade analysiert werden.
3. [Relative Identifikation]: Wo zu zitiert werden, hängt der relative analytische Ort von der angeführten Stelle ab und folgt den lokalen Regeln.
SeaJs.use -Pfad -Lösungsregeln
[Relative Identifikation]: Analysieren Sie relativ zur aktuellen Seite.
Definieren Sie die Modul -ID -Parsingregeln (1)
(In Schicht 3 kann der Pfad relativ zu Alias oder Pfaden eingestellt werden)
Sie können verwenden: [Relative Identifikation], [Identifizierung der obersten Ebene], [Root Path]
Es wird empfohlen, [Identifizierung der obersten Ebene] zu verwenden.
【Relative Identifizierung】: Analyse relativ zur aktuellen Seite
Kopieren Sie den Code wie folgt: // Code Block (2)
// config - Verwenden Sie auch die Konfiguration in [Codeblock (1)].
// Modul 1, keine Mehrdeutigkeit, Wurzelpfadanalyse
define ("/app/src/modul/base", ..);
// Modul 2, eindeutige Identifizierung auf der oberen Ebene, analysiert im Verhältnis zum Basisgründeweg
Define ("app/src/modul/base", ..);
// Modul 3 mit Mehrdeutigkeit und relativer Identifizierung hier relativ zur aktuellen Seite (siehe HTML -Seite dieses Moduls)
// Aber selbst wenn [oberflächlich die gleiche "ID"] an anderer Stelle verwendet wird, können verschiedene Module analysiert werden
define ("./ App/src/modul/base", ..);
Regeln der Modulabhängigkeits -ID -Auflösung (2)
(In Schicht 3 kann der Pfad relativ zu Alias oder Pfaden eingestellt werden)
【Relative Identifizierung】: Relative Base Basis -Pfadanalyse
Kopieren Sie den Code wie folgt: // Code Block (3)
// config - Verwenden Sie auch die Konfiguration in [Codeblock (1)].
// Keine Mehrdeutigkeit, relativ zur Auflösung des Wurzelpfades
Define ("..", ["/app/src/modul/base"], ..)
// Keine Mehrdeutigkeit, Identifizierung auf höchster Ebene, relativ zur Basis-Basis-Pfadanalyse
Define ("..", ["App/SRC/Modul/Base"], ..)
// Es gibt Unklarheiten im Verhältnis zum aktuellen Modul.
// Die Abhängigkeit hier scheint von "Modul 3" in [Codeblock (2)] abzuhängen.
// Aber wenn das aktuelle Modul und die aktuelle Seite nicht in derselben Ebene sind, wird es nicht in "Modul 3" analysiert
Define ("..", ["./app/src/module/base"], ..)
Erfordern Sie ID -Lösungsregeln für andere Module innerhalb des Moduls (3)
(In Schicht 3 kann der Pfad relativ zu Alias oder Pfaden eingestellt werden)
【Relative Identifizierung】: Relative Base Basis -Pfadanalyse
Kopieren Sie den Code wie folgt: // Code Block (4)
// config - Verwenden Sie auch die Konfiguration in [Codeblock (1)].
Define ("..", [..], Funktion (benötigt) {
// Keine Mehrdeutigkeit, relativ zur Auflösung des Wurzelpfades
benötigen ("/app/src/modul/base");
});
Define ("..", [..], Funktion (benötigt) {
// Keine Mehrdeutigkeit, Identifizierung auf höchster Ebene, relativ zur Basis-Basis-Pfadanalyse
benötigen ("App/SRC/Modul/Base");
});
Define ("..", [..], Funktion (benötigt) {
// Es gibt Unklarheiten im Verhältnis zum aktuellen Modul.
// Die Abhängigkeit hier scheint von "Modul 3" in [Codeblock (2)] abzuhängen.
// Aber wenn das aktuelle Modul und die aktuelle Seite nicht in derselben Ebene sind, wird es nicht in "Modul 3" analysiert
benötigen ("./ App/src/modul/base");
})
Besondere Erinnerung: Es gibt drei Orte im Modul, an denen IDs geschrieben werden müssen, und es ist nicht erforderlich, die gleiche Zeichenfolge zu verwenden, solange es in dasselbe Modul analysiert wird.
Zusammenfassen:
1. Die Einstellungen von Pfaden und Alias entsprechen nur einer Variablen.
2. Verwenden Sie so viel wie möglich [Top -Level -Logo].
3. Wenn Sie die [Top-Level-Kennung] nicht verwenden können, wie z. B. die Verzeichnisspanne relativ groß, versuchen Sie, Alias oder Pfade zu setzen Diese Kennung.