requireJs Build-Skript
Frage
Ich habe Code wie den folgenden
define("ModuleA", ["InitialDependency"], function (initDep){
return {};
});
define("ModuleB", ["ModuleA", "OtherDependency"], function (moduleA, otherDep){
return {};
});
Jedes dieser Module ist in separaten Dateien „ModuleA.js“, „Moduleb.js“, „InitialDependency.js“ und „OtherDependency.js“ definiert.
Diese Module werden nacheinander in meine Anwendung geladen.ModulB wird immer nach ModulA geladen.Das bedeutet, dass ich in der Optimierungsphase nicht möchte, dass das Skript von ModulA im erstellten Skript für ModulB kombiniert wird.Ich möchte Folgendes
ModuleA.built.js enthält
- InitialDependency
- ModulA
ModuleB.built.js enthält
- AndereAbhängigkeit
- ModulB
Ich möchte sie jedoch nicht alle in derselben Datei haben, da ModuleB möglicherweise nie geladen wird.
Ich kann ein Build-Skript für beide Module erstellen, aber das wird zeitaufwändig sein, da ich in meinem Projekt ziemlich viele Module habe und ein Build-Skript hätte, das viele davon auf einmal erstellt.
Was muss ich wissen, um ein Build-Skript zum Erstellen dieser beiden Module (und weiterer Module, die demselben Abhängigkeitsmuster folgen) zu erstellen?
Lösung
Um dies zu erreichen, müsste man mit dem spielen modules
Konfigurationsoption.
Es könnte so aussehen:
{
modules: [
{
name: "ModuleA",
include: [],
exclude: []
},
{
name: "ModuleB",
exclude: [
"moduleA"
]
}
]
}
Ein ähnliches Beispiel-Setup von James gibt es hier: https://github.com/requirejs/example-multipage
Wenn Sie diese Module separat erstellen, müssen Sie möglicherweise die Pfade aktualisieren.Wenn ja, wäre es am besten, eine Datei zu erstellen, die Folgendes enthält: require.config
Rufen Sie mit einer speziellen Einstellung für Ihre erstellte App auf und fügen Sie diese Konfiguration anstelle Ihrer üblichen ein.Aber wenn Sie die Abhängigkeiten gut getrennt festlegen, ist das wahrscheinlich kein Problem.Mit „gut getrennt“ meine ich das wenn moduleA
ist das Basisskript, dann sollte es keine Abhängigkeiten enthalten moduleB
- aber ich denke, das ist gesunder Menschenverstand!
Hinweis zu unterlegten Modulen:Da Shim-Konfigurationen nur funktionieren, wenn Dateien geladen werden und von RJS zum Bestellen von Plugins verwendet werden, stellen Sie sicher, dass Sie kein Shim-Modul ohne dessen Abhängigkeit einbinden, wenn Sie nicht 100 % sicher sind, dass diese vorher geladen werden.Weitere Infos hier: https://github.com/requirejs/example-multipage-shim
Ich hoffe das hilft!