私はさまざまな非同期リソースローダーを調べてきましたが、どれを使用するのかまだわかりません。私が作業している場所には、クラスモジュールが異なるバージョンのjQuery(など)を使用する可能性がある、さまざまなグループの取り組みがあります。そのため、ネストされた依存関係も異なる場合があります。私はこれを制御できないため、同じライブラリの別のバージョンを使用する可能性があるリソースを動的にロードする必要があります。
そのため、ここに私の要件があります:
私はこれまで見てきました:
バージョンを適切な名前空間の変数にロードし、配列を使用して既にロードされているものを追跡することで、これらの要件を自分で偽造できるかもしれません...しかし(うまくいけば)誰かがすでにこれを発明している.
だから私の質問は:
UPDATE:
興味のある方のために、私は上記の(そしてそれ以上の)AMDライブラリをすべて試しました。結局、私は RequireJS で行きました。全体的にすっきりしていて簡単です...そして、私はそれを使用してうれしいです。
真剣なプロジェクトでRequireJSを使用してきましたが、それは大好きですが、非同期ローダーを意図したものではありません。それは本当にモジュールシステムであることを意味しています。非同期の読み込みは、その目的のためにサービスで提供されます。任意の要件を満たすためにプッシュできますが、その読み込みサービスは、任意のファイルではなくモジュールを読み込むように設計されています。
JavaScriptおよびCSSリソースファイルを非同期でロード: Requirejsは、スクリプトタグを使用して必要なモジュールをロードしますインジェクション、非同期。
バージョン間の依存関係の順序とネストされた依存関係を管理する:これは、RequireJSが輝く場所です。モジュールは他のモジュールへの依存関係を宣言する場合があり、ロード順序はその依存関係の宣言から推定されます。依存関係の順序を強制できる注文プラグインもあります。
リソースが既にロードされているかどうかを検出: Requirejsはモジュールを一度だけロードします。
クロスドメインローディング(CDN)を許可する必要があります:これは可能ですが、いくつか必要です構成;任意のモジュールに特定のURLを設定すると、デフォルトの場所が上書きされるため、CDNに設定できます。
RequireJSは、その形式を使用してモジュールを作成する場合に最適に機能し、未加工のJavaScriptをロードするために使用する場合は効果が最も低くなります。
また、モジュールを1つのファイルにマージしてプロダクション用にするビルドプロセスも提供します。
理論的には、既にロードされているスクリプトのリストを保持し、まだロードされていないスクリプトをロードする関数を作成することができます。
RequireJSを見ていて、CSSファイルに依存したい場合は、 CSSP RequireJSプラグイン をチェックアウトできます。
CSSとパディング。このプロジェクトは、モジュールが依存関係としてCSSファイルをリストできるようにする RequireJS プロジェクトのプラグインを実装します。これにより、RequireJSは、評価されるJavaScriptモジュールをリリースする前に、特定のスタイルルールが有効であることがわかるまで待機することができます。これは、たとえば、JavaScriptモジュールが、初期化する前にDOMに適用される別のファイルで定義された特定のCSSルールを必要とする場合に役立ちます。