0

プロジェクトの最適化に成功しました:

main.js
----------------
main.js
lib/jquery/jquery.js
lib/underscore/underscore-min.js
lib/aura/base.js
lib/aura/core.js
etc...

login.js
----------------
models/page.js
models/user.js
helpers/permissions.js
helpers/pager.js
login.js
etc...

何らかの理由で、ログイン ページを読み込むと、共通ファイル (main.js) に既に含まれている依存関係が引き続きトレースされます。そのため、jquery、アンダースコアなどの個別のリクエストがあります。

次のように複数ページのシムの例を使用しています。

require(['main'], function (main) { require(['login']) });

それらの依存関係を見つけるために共通モジュールを使用しない理由はありますか?

4

1 に答える 1

0

私は、RequireJS を使用する Play Framework プロジェクトで同じ奇妙な動作と戦ってきました。この問題の原因は、トップレベル モジュールが呼び出しrequireて、間違ったモジュール名を提供したことでした。残念ながら、この間違ったモジュール名が RequireJS によって読み込まれ、プロセス全体が間違った依存関係グラフに導かれる可能性があり、すべてのファイルに対して個別の要求が行われることになりました。

個々の JavaScript ファイルは実際には (ビルド構成を変更しない場合) デプロイの一部であり、最適化された単一 (または場合によっては複数) の最適化されたものだけではないため、これは Play Framework プロジェクトにのみ潜在的なエラーであると思います。必要なものはすべてインライン化されています。

別のメモとして、https://github.com/requirejs/example-multipage-shimも試してみましたが、私にとってはそのままで動作します。www-builtフォルダーの出力を使用する場合、RequireJS は実際には 2 つの HTTP 要求のみを実行して、必要なものを取得します。

この問題が発生した場合は、RequireJS オプティマイザーの出力を見て、RequireJS モジュールの名前 (つまり、define呼び出しの潜在的な依存関係の前にある文字列パラメーター) を確認することをお勧めします。UglifyJS のコード美化を有効にすることで、オプティマイザーの出力をより読みやすくすることができます構成設定。

于 2014-05-01T14:47:13.063 に答える