require.jsを使用します。大規模な JavaScript アプリケーションで依存関係を管理するには、非常に強力です。
AMD
Asynchronous Module Definition ( AMD ) API は、モジュールとその依存関係を非同期的にロードできるようにモジュールを定義するメカニズムを指定します。これは、モジュールの同期ロードによってパフォーマンス、ユーザビリティ、デバッグ、およびクロスドメイン アクセスの問題が発生するブラウザ環境に特に適しています。
define.amd プロパティ
グローバル定義関数 (スクリプト src ブラウザーの読み込みに必要) が AMD API に準拠していることを明確に示すために、すべてのグローバル定義関数は、値がオブジェクトである「amd」というプロパティを持つ必要があります。これにより、AMD API に準拠しない define() 関数を定義した可能性のある他の既存の JavaScript コードとの競合を回避できます。
define.amd オブジェクト内のプロパティは、現時点では指定されていません。実装がサポートする基本的な API 以外の機能について通知したい実装者が使用できます。
オブジェクト値を持つ define.amd プロパティの存在は、この API に準拠していることを示します。別のバージョンの API がある場合は、define.amd2 などの別のプロパティを定義して、そのバージョンの API に準拠する実装を示す可能性があります。
環境内のモジュールの複数のバージョンをロードできる実装に対して定義する方法の例:
define.amd = {
multiversion: true
};
最低限の定義:
define.amd = {};
依存ファイルの順序の管理
RequireJS は、ファイルの読み込みにAsynchronous Module Loading (AMD)を使用します。各依存モジュールは、指定された順序で非同期リクエストを介してロードを開始します。ファイルの順序は考慮されますが、非同期の性質上、最初のファイルが 2 番目のファイルの前に読み込まれるとは限りません。したがって、RequireJS を使用すると、shim 構成を使用して、正しい順序でロードする必要がある一連のファイルを定義できます。RequireJS で構成オプションを作成する方法を見てみましょう。
requirejs.config({
shim: {
'source1': ['dependency1','dependency2'],
'source2': ['source1']
}
});
RequireJS を使用すると、config() 関数を使用して構成オプションを提供できます。依存関係の必須シーケンスを定義するために使用できる shim というパラメーターを受け入れます。完全な構成ガイドは、RequireJS API ドキュメントにあります。
参照 1) http://www.sitepoint.com/understanding-requirejs-for-effective-javascript-module-loading/
2) https://github.com/amdjs/amdjs-api/wiki/AMD