6

複数のモジュールを含むプロジェクトで RequireJS を使用するための適切なアプローチは何か、依存関係の少ない複数の require 呼び出しとすべての依存関係を持つ単一の require のパフォーマンスに関して、疑問に思っています。

アプリの場合、いくつかのモジュールをロードする必要がある場合を考えてみましょう: gmaps, jquery, module1, module2, module3. 一部のモジュールの使用は完全に独立しています。したがって、問題は、次の代替案のどれが推奨されるかです (おそらく、このコードがページにロードされるメイン モジュールです)。

require(['gmaps'], function(gmaps){
   gmaps.use();
});

require(['jquery','module1'], function(jquery, module1){
   module1.use();
});

require(['jquery','module2'], function(jquery, module2){
   module2.use();
});

require(['jquery','module3'], function(jquery, module3){
   module3.use();
});

require(['jquery','module1','module1','module1','gmaps'], function(jquery, module1,module2,module3,gmaps){
   module1.use();
   module2.use();
   module3.use();
   gmaps.use();
});

つまり、パフォーマンスの低下とは何かrequire、ベスト プラクティスとは何かということです。

4

3 に答える 3

1

必要な読み込み動作によって異なります。

まだ要求されていないモジュールを要求すると、必要なモジュールをロードするために HTTP 要求が行われます。必要なモジュールが少なくとも 1 回読み込まれている場合は、require のキャッシュに保存されるため、モジュールを 2 回目に必要とするときは、キャッシュされた値が使用されます。

そのため、遅延ロードまたは熱心なロードの選択です。

require が解決しようとしている問題は、各モジュールがその依存関係を定義できることです。したがって、最初のアプローチはおそらく「ベストプラクティス」です。最終的には、r.js を使用して、アプリケーションを単一の JS ファイルにビルドする必要があります。

于 2013-11-10T17:21:55.233 に答える
1

2 番目のアプローチは、異なるプログラム ロジックの分離である require js の主な目的に反する私の意見です。とにかくコードを1つの「モジュール」に入れるのに、なぜrequirejsを使用するのでしょうか? パフォーマンスに関しては、パフォーマンスの定義を定義することが重要です。それがコード実行の速度であれば、目に見える違いはないはずです。コードは、必要なモジュールがすべてロードされるとすぐに実行されます。一方、パフォーマンスの意味は次のとおりです。コードの実行が開始されると、明らかに2番目のアプローチでは、必要なコードが配置されているファイルに対する追加のリクエストによってオーバーヘッドが追加されます。

編集:

質問を詳しく見てみると、私の回答の最初の部分はうまく当てはまりませんでした。コードは実際には外部モジュールを参照しているため、2 番目のオプションは requirejs ライブラリの目的に反するものではなく、依存関係を結合するモジュールがあまり多くのことをしようとしない限り、実際にはより良いアプローチです。

于 2013-11-10T17:35:32.417 に答える