SeaJS は、CommonJS 仕様に準拠した JavaScript モジュール読み込みフレームワークです。これは Web 開発用の最新のモジュール読み込みツールであり、シンプルで究極のモジュール エクスペリエンスを提供します。 Sea.js は、Alibaba、Tencent、およびその他の企業によって共同で維持されています。
Sea.js を使用する利点:
Sea.js は、コードを記述して編成するシンプルかつ自然な方法を追求しており、次の主要な機能を備えています。
シンプルでフレンドリーなモジュール定義仕様: Sea.js は CMD 仕様に従っており、Node.js と同様のモジュール コードを作成できます。
自然で直感的なコード構成: 依存関係の自動読み込みと簡潔で明確な構成により、コーディングをさらに楽しむことができます。
Sea.js は、開発、デバッグ、パフォーマンスの最適化に非常に役立ち、豊富な拡張可能なインターフェイスを備えた一般的に使用されるプラグインも提供します。
以下は、sea.js でモジュールを作成する 3 つのモードの紹介です
エクスポートを使用します。エクスポートは、モジュール インターフェイスを外部に提供するために使用されるオブジェクトです。
define(function (require, exports, module) { var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.fun1=fun1; });
エクスポート オブジェクトにメンバーを追加するだけでなく、return を使用して外部にインターフェイスを直接提供することもできます。
define(function(require,exports,module){ var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; return{ fun1:fun1 } })
モジュールにビジネス ロジックがなく、オブジェクトを返すだけの場合は、次のように簡略化できます
define({ fun1 : function () { alert("模块main的fun1调用成功") } });
もう 1 つのオプションは、module.exports を通じて外部に統合インターフェイスを提供することです。例:
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 は module.exports への単なる参照です。メソッド内でエクスポートが再割り当てされる場合、module.exports の値は変更されません。したがって、exports への値の割り当ては無効であり、上記の b メソッドの割り当ては 1 つだけ外部に公開されるため、モジュール インターフェイスの変更には使用できません。
exports.async()
require.async(id||[], コールバック?)
require.async メソッドは、モジュール内でモジュールを非同期的にロードし、ロードの完了後に指定されたコールバックを実行するために使用されます。コールバックパラメータはオプションです。
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模块成功引入") }); });
モジュール module は、現在のモジュールに関連付けられたいくつかのプロパティとメソッドを保存するオブジェクトです。
1 module.id 文字列
モジュールの一意の識別子。
2 module.uri 文字列
モジュールシステムのパス解析ルールに従って取得されたモジュールの絶対パス。通常の状況(defineでidパラメータが手書きされていない場合)では、module.idの値はmodule.uriであり、全く同じです。
3 module.dependency 配列
dependency は、現在のモジュールの依存関係を表す配列です。