RequireJS
1897 ワード
RequireJSはJavaScriptファイルとモジュール搭載器です.RequireJSは三つの重要な関数を含みます.require、define、requirejs.requireとrequirejsは実は同じ関数です.
名前空間
RequireJSにMap変数contextsがあります.各contextは名前空間またはパッケージ構造に相当します.定義されたモジュールはこれらのcontextに保存され、同じモジュール名の衝突を防ぐことができます.
各contextには名前があります.RequireJSにはデフォルトのcontextが内蔵されています.その名前は「u」です.defineを呼び出す前にcontext Nameが設定されていなかったら、このデフォルトのcontextを使用します.
キーポイント概念
モジュール定義
モジュール依存ロード
モジュールがロードされた後、直接windowオブジェクトに格納されるのではなく、require、requreeJSなどの方法オブジェクト上のある属性の中に、defined、registryなどがあります.
互換性
IE 6+….comptible✔Firefox 2+….comptible✔Safari 3.2+….comptible✔Chrome 3+…comptible✔Opera 10+…comptible✔
ブラウザでの原理
module_IDはJavaScriptファイルの名前です.baseUrlでモジュールの位置を判断した後、headでscript元素を作成し、srcを修正してjsモジュールのロードを実現します.
新しく作成されたscript要素なので、ブラウザはHTMLページのレンダリングを停止しません.したがって、ページのscriptはこのようにロードされたJSコードより先に実行されます.
モジュール化のメリット
requireを使用する前に、命名の衝突を防止するために、通常はグローバルの名前空間があります.したがって、モジュールファイルのフォーマットは常に以下の通りです.
名前空間
RequireJSにMap変数contextsがあります.各contextは名前空間またはパッケージ構造に相当します.定義されたモジュールはこれらのcontextに保存され、同じモジュール名の衝突を防ぐことができます.
各contextには名前があります.RequireJSにはデフォルトのcontextが内蔵されています.その名前は「u」です.defineを呼び出す前にcontext Nameが設定されていなかったら、このデフォルトのcontextを使用します.
キーポイント概念
モジュール定義
define(
module_id /* optional */ ,
["foo", "bar"] /* dependencies,optional */,
function (foo, bar) {}
)
[foo],“bar”はmodule依存の他のモジュールであり、これらの2つのモジュールがローディングされた後、Fnctionに着信パラメータとして伝えられる.functionは一つのオブジェクトに戻らなければなりません.moduleとしてはいけません.moduleは特殊な機能を持っていて、長い間試練を受けた対象です.モジュール依存ロード
require(
["foo", "bar"] , function(foo,bar) {
foo.doSomething();
}
)
requireは一般にモジュール実行モジュールの機能をロードするために使用されます.モジュールがロードされた後、直接windowオブジェクトに格納されるのではなく、require、requreeJSなどの方法オブジェクト上のある属性の中に、defined、registryなどがあります.
互換性
IE 6+….comptible✔Firefox 2+….comptible✔Safari 3.2+….comptible✔Chrome 3+…comptible✔Opera 10+…comptible✔
ブラウザでの原理
module_IDはJavaScriptファイルの名前です.baseUrlでモジュールの位置を判断した後、headでscript元素を作成し、srcを修正してjsモジュールのロードを実現します.
新しく作成されたscript要素なので、ブラウザはHTMLページのレンダリングを停止しません.したがって、ページのscriptはこのようにロードされたJSコードより先に実行されます.
モジュール化のメリット
requireを使用する前に、命名の衝突を防止するために、通常はグローバルの名前空間があります.したがって、モジュールファイルのフォーマットは常に以下の通りです.
namespace.module= (function(){return module;})();
requireを使用すると、モジュールファイルのフォーマットは以下のような構造になります.define("module_id", [depended modules], (function(depended modules){return module;})();
// , , 。 , :
(function(root){return module;})(this);
つまり、特定の名前空間の制限を逸脱して、モジュールは本当に独立しています.このように、どの項目においても、requireJSを使えばmoduleをロードし、自由に名前をつけられます.