JavaScript Asynch-Loaderの選択[終了]


9

私はさまざまな非同期リソースローダーを調べてきましたが、どれを使用するのかまだわかりません。私が作業している場所には、クラスモジュールが異なるバージョンのjQuery(など)を使用している可能性がある、さまざまなグループの取り組みがあります。そのため、ネストされた依存関係も異なる場合があります。私はこれを制御できないため、同じライブラリの別のバージョンを使用する可能性があるリソースを動的にロードする必要があります。

そのため、ここに私の要件があります:

  1. JavaScriptおよびCSSリソースファイルを非同期でロードします。
  2. バージョン間の依存関係の順序とネストされた依存関係を管理します。
  3. リソースが既にロードされているかどうかを検出します。
  4. クロスドメインローディングを許可する必要があります(CDN)
  5. (オプション)リソースのアンロードを許可します。

私は見てきました:

バージョンを適切な名前空間の変数にロードし、配列を使用して既にロードされているものを追跡することで、これらの要件を自分で偽造できるかもしれませんが、(うまくいけば)誰かがすでにこれを発明しています。

だから私の質問は:

  • どれを使いますか?なぜ?
  • 私の要件を完全に満たしている人は他にいますか?
  • 雄弁で最も扱いやすいのはどれですか。なぜ?

更新:
興味のある方のために、私は上記のAMDライブラリ(すべて)をすべて試しました。結局、私はRequireJS使いました。全体的にすっきりしていて簡単です...そして、私はそれを使用してうれしいです。


JavaScriptの場合、#5さえ可能ではないと思います。CSSで理論的には可能かもしれませんが、ブラウザーがそれをサポートしているかどうかはわかりません。
Mike Baranczak、

@マイクコメントしてくれてありがとう!非同期ローダーがオブジェクト変数を使用してリソースを追跡および設定した場合...それは完全に可能です。
囚人ZERO

そうですが、NEWコンストラクターはオブジェクトを複製するため、呼び出したものの新しいものを作成しても、そのオブジェクトはまだ存在します。なぜとにかくそれをアンロードするのですか?
シークレットモード、

@ user1525コメントありがとうございます!リソースをアンロードすると、メモリが節約されます。上記の質問を編集して、コメントを考慮します(数分以内)。再度、感謝します!
囚人ZERO

jQueryにはすでにgetScriptスクリプトインジェクション用の関数があります。
zzzzBov 2011

回答:


7

真剣なプロジェクトでRequireJSを使用してきましたが、それは大好きですが、非同期ローダーを意図したものではありません。それは本当にモジュールシステムであることを意味しています。非同期読み込みは、その目的のために提供されています。任意の要件を満たすためにプッシュできますが、その読み込みサービスは、任意のファイルではなくモジュールを読み込むように設計されています。

JavaScriptとCSSリソースファイルを非同期で読み込む Requirejsは、スクリプトタグインジェクションを使用して、必要なモジュールを非同期で読み込みます。

バージョン間の依存関係の順序とネストされた依存関係を管理しますこれが、RequireJSが輝く場所です。モジュールは他のモジュールへの依存関係を宣言する場合があり、ロード順序はその依存関係の宣言から推定されます。依存関係の順序を強制できる注文プラグインもあります。

リソースが既にロードされているかどうかを検出する Requirejsはモジュールを1回だけロードします。

クロスドメインロード(CDN)を許可する必要がありますこれは可能ですが、いくつかの構成が必要です。任意のモジュールに特定のURLを設定すると、デフォルトの場所が上書きされるため、CDNに設定できます。

RequireJSは、そのフォーマットを使用してモジュールを作成する場合に最適に機能し、未加工のJavaScriptをロードするために使用する場合は効果が最も低くなります。

また、モジュールを1つのファイルにマージしてプロダクション用にするビルドプロセスも提供します。


3

理論的には、既にロードされているスクリプトのリストを保持し、まだロードされていないスクリプトをロードする関数を作成することができます。

http://jsfiddle.net/BDG/Dhdu7/2/


2
または、Curl / RequireJSを使用して、この機能やその他の機能を利用できます。そして、あなた自身でそれを維持する必要はありません;)
レイノス'17年

明確な構造と非相対インクルードについて言及するのを忘れていました。
シークレットモード、

2

RequireJSを見ていて、CSSファイルに依存したい場合は、CSSP RequireJSプラグインをチェックアウトできます

CSSとパディング。このプロジェクトは、 モジュールがCSSファイルを依存関係としてリストできるようにするRequireJSプロジェクトのプラグインを実装します。これにより、RequireJSは、評価されるJavaScriptモジュールをリリースする前に、特定のスタイルルールが有効であることがわかるまで待機することができます。これは、たとえば、JavaScriptモジュールが、初期化する前にDOMに適用される別のファイルで定義された特定のCSSルールを必要とする場合に役立ちます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.