1

jQuery とアンダースコアの AMD サポートについての議論があります。ここでの多くの質問は、開発者がこれらのライブラリを require または curl で使用する際に問題があることを示しています。jQueryとアンダースコアを「そのまま」(独自のスクリプト要素で)使用しないのはなぜですか? 実際のアプリコードだけに require のようなモジュールシステムを使用しないのはなぜですか?

4

3 に答える 3

2

たとえば RequireJS を使用する利点の 1 つは、すべてを1 つのファイルに縮小および最適化して、読み込みサイズを小さくし、リクエストを少なくできることです。

多くの人はやみくもにファイルのサイズに注目し、ファイルの量も重要であることを忘れています。ファイルごとにリクエストを行う必要があるからです。クライアントがしなければならない要求が少ないほど、より良い結果が得られます。

RequireJS の r.js を調べて、最適化について詳しく学びます。


あなたの質問に答えるには:

jQuery とアンダースコアを別々に追加すると、クライアントの負荷サイズが増加し、2 つのリクエストも追加されるため、最適ではありません。

jQuery を RequireJS に追加する必要はもうありません。shim などを行う必要はありません。アンダースコアが必要な場合は、AMD をサポートし、アンダースコアのパフォーマンス最適化バージョンである LoDash を代わりに使用する必要があります。

于 2013-03-11T09:42:12.503 に答える
1

私の職場で遭遇するもう 1 つのユース ケースは、自分のアプリを他のサイトに埋め込む場合です。親サイトには、ページ上で実行されている独自の jQuery コードが既にある可能性があります。彼らの jQuery コードはあなたのものとは異なるバージョンである可能性があり、あなたとは異なるプラグインを使用している可能性があります。したがって、独自のバージョンの jQuery を持ち、それをグローバル スコープに漏らさないことは、この場合大きなメリットです。

于 2013-03-11T15:40:54.793 に答える
0

初め:

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 システムは、現在のインライン スクリプト タグ構造の上に便乗する可能性があります。

于 2013-03-12T18:41:20.413 に答える