75

これは、Web担当者にとってはばかげた質問かもしれません。しかし、私はこれについて少し混乱しています。これで、いくつかのJavascriptファイルを使用してさまざまなタスクを実行するアプリケーションができました。現在、Javascriptバンドラーを使用し、すべてのファイルを結合および縮小しています。したがって、実行時にapp.min.jsファイルは1つだけになります。現在、Requirejsは、実行時にモジュールまたはファイルをロードするために使用されます。したがって、問題は、すでにすべてのものが1つのファイルにある場合、requirejsが必要ですか?または、requirejsやbundlerを使用できるユースケースシナリオは何ですか?

さらに詳しい情報が必要な場合はお知らせください。

4

3 に答える 3

48

一般に、開発中はロード フォームでのみ RequireJS を使用します。サイトが完成し、デプロイの準備ができたら、コードを縮小します。ここでの利点は、RequireJS が依存関係を正確に認識しているため、正しい順序でコードを簡単に縮小できることです。RequireJS Web サイトでの説明は次のとおりです。

開発が完了し、エンド ユーザーにコードをデプロイしたい場合は、オプティマイザーを使用して JavaScript ファイルを結合し、縮小することができます。上記の例では、main.js と helper/util.js を 1 つのファイルに結合し、結果を縮小できます。

于 2012-09-02T02:06:24.653 に答える
29

これは、多くの熟練した JavaScript 開発者の間で激しく争われている問題です。他の多くの言語には、展開のためにプログラム全体がバンドルされる「コンパイル」フェーズがあります (JBoss の .WAR ファイルが思い浮かびます)。より伝統的なバックグラウンドを持つプログラマーは、このアプローチを好むことがよくあります。

Javascript は近年非常に成長しているため、正確なベスト プラクティスを図表化することは困難ですが、Javascript のより機能的な性質を高く評価する人は、多くの場合、(require.js の使用のような) モジュール ロード アプローチを好みます。

私は、 require.jsと同じように動作する Frame.js を作成したので、私の偏見はモジュール ローダー アプローチです。

あなたの質問に直接答えるには、はい、それはどちらかです。

スクリプトを 1 つのファイルにまとめることを主張するほとんどの人は、より多くの圧縮が可能になり、より効率的であると信じています。ほとんどの場合、パッケージングの効率的な利点は無視できると思います: (1) モジュールのロード時間がセッション全体に分散される、(2) 個々のモジュールをほぼ同じ割合で圧縮できる、(3) 個々のモジュールを次のようにキャッシュできるサーバーとルーターを別々に、(4) 必要なときにのみスクリプトをロードすることで、最終的に一部のユーザーのコードを少なくして、全体的により多くのコードをロードできます。

長い目で見れば、動的スクリプトの読み込みに利点がある場合は、それを使用してください。そうでない場合は、スクリプトを 1 つのファイルにまとめます。

于 2012-09-02T02:07:38.423 に答える
11

アプリケーションによって異なります。適度な javascript (100kb 未満の縮小版) のみを使用してサーバー側のアプリを作成している場合は、完全にバンドルすることをお勧めします。おそらく問題ありません。

しかし、JavaScript アプリを作成していて、そこに大量のコードが含まれている場合、ニーズは異なります。

たとえば、私のアプリでは、すべてのコア ファイルをバンドルしています。jQuery、アンダースコア、バックボーン、メインのアプリ ファイル、ユーザー ログイン システム、レイアウト システム、通知、チャット システムなど、すべてが大きな初期ファイルの一部です。

しかし、最初のバンドルの一部ではなく、それらの後にロードされる他の多くのモジュールもあります。

フォーラム、wiki、wysiwyg、カラー ピッカー、ドラッグ アンド ドロップ、カレンダー、およびいくつかのアニメーション ファイルは、2 番目のカテゴリの一部です。一般的に使用され、すぐに必要とされるものと、遅れる可能性があるものについて、合理的な決定を下す必要があります。

すぐにすべてを含めると、大量の JavaScript を超える可能性があります。これは正気ではなく、最初の起動が容認できないほど遅くなります。

2 番目のカテゴリはinitSuccess、最初のファイルからイベントが発生した後にダウンロードを開始します。

しかし、2 番目のカテゴリは、より重要なものを最初にロードするという点で、最初のカテゴリよりもインテリジェントです。たとえば、wiki を見ている場合、カラー ピッカーをロードする前に wiki をロードします。

于 2012-09-03T19:34:52.873 に答える