SeaJS ist ein JavaScript-Modullade-Framework, das der CommonJS-Spezifikation folgt. Es handelt sich um ein modernes Tool zum Laden von Modulen für die Webentwicklung, das ein einfaches und ultimatives modulares Erlebnis bietet. Sea.js wird gemeinsam von Alibaba, Tencent und anderen Unternehmen verwaltet.
Vorteile der Verwendung von Sea.js:
Sea.js verfolgt eine einfache und natürliche Art, Code zu schreiben und zu organisieren und verfügt über die folgenden Kernfunktionen:
Einfache und benutzerfreundliche Moduldefinitionsspezifikation: Sea.js folgt der CMD-Spezifikation und kann Modulcode wie Node.js schreiben.
Natürliche und intuitive Code-Organisation: Das automatische Laden von Abhängigkeiten und die prägnante und klare Konfiguration ermöglichen uns mehr Freude am Programmieren.
Sea.js bietet außerdem häufig verwendete Plug-Ins, die für die Entwicklung, das Debuggen und die Leistungsoptimierung sehr hilfreich sind und über umfangreiche erweiterbare Schnittstellen verfügen.
Das Folgende ist eine Einführung in die drei Modi zum Schreiben von Modulen in sea.js
Exports verwenden ist ein Objekt, das zur Bereitstellung von Modulschnittstellen zur Außenwelt verwendet wird.
define(function (require, exports, module) { var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.fun1=fun1; });
Zusätzlich zum Hinzufügen von Mitgliedern zum Exportobjekt können Sie mit return auch direkt Schnittstellen zur Außenwelt bereitstellen.
define(function(require,exports,module){ var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; return{ fun1:fun1 } })
Wenn das Modul keine Geschäftslogik hat und nur ein Objekt zurückgibt, kann es wie folgt vereinfacht werden
define({ fun1 : function () { alert("模块main的fun1调用成功") } });
Eine weitere Möglichkeit besteht darin, über module.exports eine einheitliche Schnittstelle zur Außenwelt bereitzustellen. Zum Beispiel:
define(function(require,exports,module){ var a = require("./init");// ./是当前目录 ../是上级目录 /是根目录 var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.b=function(){ //没有任何意义,赋值无效 alert("bb") }; module.exports={ fun1:fun1 } });
exports ist nur ein Verweis auf module.exports. Wenn exports innerhalb der Methode neu zugewiesen wird, wird der Wert von module.exports nicht geändert. Daher ist die Zuweisung eines Werts zu Exporten ungültig. Die obige Methode macht nur einen fun1 nach außen sichtbar. Die obige b-Methodenzuweisung ist ungültig und kann nicht zum Ändern der Modulschnittstelle verwendet werden.
exports.async()
require.async(id||[], Rückruf?)
Die Methode require.async wird verwendet, um das Modul asynchron innerhalb des Moduls zu laden und den angegebenen Rückruf auszuführen, nachdem der Ladevorgang abgeschlossen ist. Der Callback-Parameter ist optional.
define(function(require,exports,module){ require.async('./init',function(a){ a.write("模块main调用模块init的write方法") }); require.async(['./init',"./search"],function(a,b){ a.write("模块main调用模块init的write方法"); b.search("search模块成功引入") }); });
Modulmodul ist ein Objekt, das einige Eigenschaften und Methoden speichert, die dem aktuellen Modul zugeordnet sind.
1 module.id String
Die eindeutige Kennung des Moduls.
2 module.uri String
Der absolute Pfad des Moduls, der gemäß den Pfadanalyseregeln des Modulsystems erhalten wird. Unter normalen Umständen (wenn der ID-Parameter in der Definition nicht handgeschrieben ist) ist der Wert von module.id module.uri, und das ist auch der Fall genau das gleiche.
3 module.dependencies Array
dependencies ist ein Array, das die Abhängigkeiten des aktuellen Moduls darstellt.