3

したがって、状況は次のとおりです。

r.jsを使用して最適化するページ固有のjsファイルがたくさんあります。

それらの99%は、core.jsと呼ばれるモジュールを依存関係として定義しています。Coreには、独自の5つの依存関係があります。

ページjsファイルの最適化されたバージョンからコアを除外することでキャッシュを活用したかったのです。

だから私のbuild.jsで私は次の線に沿って何かを試しました:

modules: [
  {
     name : 'modules/core'
  },
  {
     name: 'homepage',
     exclude : ['modules/core']
  }
]

オプティマイザーを実行すると、モジュール/コアとホームページの両方がうまく最適化されます。

homepage.jsを使用するページに移動すると、問題は次のようになります。core.jsとその依存関係が個別に読み込まれ、2つではなく7つのリクエストが発生します。

上記の例で、私が達成しようとしているのは、homepage.jsとその依存関係を単一のファイルに最適化し、core.jsとその依存関係を個別にロードするのではなく、最適化されたバージョンのcore.jsにロードすることです。 。

それも可能ですか?

4

1 に答える 1

2

ビルド後、次の2つのオプションがあります。

1)モジュール/コアが他のロードの前にロードされるように、トップレベルのロードを変更します。

require(['modules/core'], function () {
  //Now do normal require stuff in here
});

ホームページの読み込みが完了する前にモジュールが要求されている場合は、ホームページに対して別のネストされたrequire()呼び出しを使用してください。

2)コア内のすべてのモジュールがコアファイルを指すrequire.configブロックを挿入します。requirejsは、複数のモジュールIDがすべてそれを指している場合に、core.jsファイルを1回だけフェッチします。

require.config({
  paths: {
    'mod/one': 'modules/core',
    'mod/two', 'modules/core',
    ...
  }
});

または、共通レイヤーをロードしてからページ固有のレイヤーをロードするように設定しているが、ビルド後にソースを変更せずに機能するこの種のサンプルプロジェクトを参照してください(#1のバリエーションを使用するだけで、ソースで機能するように設定します)形):

https://github.com/requirejs/example-multipage

于 2013-03-15T18:41:26.593 に答える