jQuery とアンダースコアの AMD サポートについての議論があります。ここでの多くの質問は、開発者がこれらのライブラリを require または curl で使用する際に問題があることを示しています。jQueryとアンダースコアを「そのまま」(独自のスクリプト要素で)使用しないのはなぜですか? 実際のアプリコードだけに require のようなモジュールシステムを使用しないのはなぜですか?
3 に答える
たとえば RequireJS を使用する利点の 1 つは、すべてを1 つのファイルに縮小および最適化して、読み込みサイズを小さくし、リクエストを少なくできることです。
多くの人はやみくもにファイルのサイズに注目し、ファイルの量も重要であることを忘れています。ファイルごとにリクエストを行う必要があるからです。クライアントがしなければならない要求が少ないほど、より良い結果が得られます。
RequireJS の r.js を調べて、最適化について詳しく学びます。
あなたの質問に答えるには:
jQuery とアンダースコアを別々に追加すると、クライアントの負荷サイズが増加し、2 つのリクエストも追加されるため、最適ではありません。
jQuery を RequireJS に追加する必要はもうありません。shim などを行う必要はありません。アンダースコアが必要な場合は、AMD をサポートし、アンダースコアのパフォーマンス最適化バージョンである LoDash を代わりに使用する必要があります。
私の職場で遭遇するもう 1 つのユース ケースは、自分のアプリを他のサイトに埋め込む場合です。親サイトには、ページ上で実行されている独自の jQuery コードが既にある可能性があります。彼らの jQuery コードはあなたのものとは異なるバージョンである可能性があり、あなたとは異なるプラグインを使用している可能性があります。したがって、独自のバージョンの jQuery を持ち、それをグローバル スコープに漏らさないことは、この場合大きなメリットです。
初め:
AMD スタイルのローダーが解決する問題は 1 つだけです。つまり、開発中にすべてのコードを 1 つのファイルにまとめることを避けることができます。この問題は、AMD ツリーを最後に「ビルド」する場合にのみ解決されます。そうしないと、より多くの HTTP リクエストが発生します。
というわけで、やり方を選ぶときはAMDを「モジュールローダAPI+コンパイラ・アセンブラ」のパッケージと考えてください。
私は個人的には CurlJS を大いに好みますが、持っていることr.js
が RequireJS の大きなセールス ポイントであると言わざるを得ません。
これは、他のものでビルドできるがr.js
(CurlJS にはベータビルド スクリプトがあります。私は AMD ビルド スクリプトを持っていますhttp://prunejs.com/多くの人が独自のビルド スクリプトを好みます)、CurlJS を使用することを意味します。それ以外の場合は、RequireJS を使用します。
2番目: jQuery、アンダースコアなど
これらは、AMD の選択にはまったく影響しません。それらは引き続きグローバルであり、そのように使用できます。jQuery は、AMD システムがロードされていることを確認したときに、自身を AMD モジュールとして登録することで (めちゃくちゃな方法で) 助けてくれます。
RequireJSでjQueryをロードせずに依存関係としてjQueryを使用しますか?
引き続きスクリプト タグを介してアンダースコアを読み込むことができますが、そのための偽の / ラッパー AMD モジュールを作成します。
define('underscore', function(){
return window._
});
つまり、AMD システムは、現在のインライン スクリプト タグ構造の上に便乗する可能性があります。