SeaJS est un framework de chargement de modules JavaScript qui suit la spécification CommonJS. Il s'agit d'un outil moderne de chargement de modules pour le développement Web, offrant une expérience modulaire simple et ultime. Sea.js est géré conjointement par Alibaba, Tencent et d'autres sociétés.
Avantages de l'utilisation de Sea.js :
Sea.js poursuit une manière simple et naturelle d'écrire et d'organiser le code et possède les fonctionnalités principales suivantes :
Spécification de définition de module simple et conviviale : Sea.js suit la spécification CMD et peut écrire du code de module comme Node.js.
Organisation naturelle et intuitive du code : chargement automatique des dépendances et configuration concise et claire nous permettent de profiter davantage du codage.
Sea.js fournit également des plug-ins couramment utilisés, qui sont très utiles pour le développement, le débogage et l'optimisation des performances, et disposent d'interfaces extensibles riches.
Ce qui suit est une introduction aux trois modes d'écriture de modules dans sea.js
Utiliser les exportations. Les exportations sont un objet utilisé pour fournir des interfaces de module avec le monde extérieur.
define(function (require, exports, module) { var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.fun1=fun1; });
En plus d'ajouter des membres à l'objet exports, vous pouvez également utiliser return pour fournir directement des interfaces avec le monde extérieur.
define(function(require,exports,module){ var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; return{ fun1:fun1 } })
Si le module n'a aucune logique métier et renvoie simplement un objet, il peut être simplifié comme suit
define({ fun1 : function () { alert("模块main的fun1调用成功") } });
Une autre option consiste à fournir une interface unifiée avec le monde extérieur via module.exports. Par exemple :
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 est juste une référence à module.exports. Lorsque les exportations sont réaffectées dans la méthode, la valeur de module.exports ne sera pas modifiée. Par conséquent, l'attribution d'une valeur aux exportations n'est pas valide. La méthode ci-dessus n'expose qu'un seul fun1 à l'extérieur. L'affectation de la méthode b ci-dessus n'est pas valide et ne peut pas être utilisée pour modifier l'interface du module.
exports.async()
require.async(id||[], rappel?)
La méthode require.async est utilisée pour charger le module de manière asynchrone à l'intérieur du module et exécuter le rappel spécifié une fois le chargement terminé. Le paramètre de rappel est facultatif.
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模块成功引入") }); });
Le module Module est un objet qui stocke certaines propriétés et méthodes associées au module actuel.
1 module.id String
L'identifiant unique du module.
2 module.uri String
Le chemin absolu du module obtenu selon les règles d'analyse de chemin du système de modules. Dans des circonstances normales (lorsque le paramètre id n'est pas écrit à la main dans définir), la valeur de module.id est module.uri, et ils le sont. exactement pareil.
3 module.dependencies Array
dependencies est un tableau représentant les dépendances du module actuel.