私はrequirejsを使用して1ページのバックボーンアプリケーションを開発しています。今日、ベータサーバーにデプロイしたときに、すべてのスクリプトをフェッチしている間、最初のページの読み込みが約20秒であることがわかりました。初期ページの読み込み時にrequire.jsがすべてのモジュールを読み込んでいるように見えるのはなぜですか?
私はそうのようなモジュールを定義するとき、私は、依存関係の配列を使用していたので、これはだったと仮定:
私はメインのアプリケーションモジュールがロードされたとき、他のすべてのスクリプトが原因に、ロードされることを意味信じdefine([
'ui',
'models/user',
'collections/campaigns',
'collections/groups',
'collections/keywords',
'collections/inboxes',
'collections/templates',
'collections/contacts',
'router'
], function (Ui, UserDetails, Campaigns, Groups, Keywords, Inboxes, Templates, Contacts, Router) {
return {
start: function() {
// ...
// initialize and start app
// ...
}
}
});
すべての単一のモジュールがこのメソッドを使用していたという事実。
私はその後、私はそれらを必要に応じて、私はこのようにそれらを必要なときに直接require('...')
を呼び出すことによって、それらを得るために、モジュールを取得する方法に変更:もう一度アプリケーションを実行してチェックすると、驚いたことにしかし
define(function (require) {
return Backbone.Router(function() {
// ...
// route initializtion etc
// ...
inbox: function (routeVar) {
var InboxView = require('InboxView');
this.inboxView = new InboxView();
// render view etc
}
});
});
をchromes開発者コンソールの[ネットワーク]タブ - アプリケーションが以前のようにすべてのモジュールを取得しているのを見て、同じページの読み込み時間を取得しています。
ここでポイントが完全に不足していますか?私は、スクリプトがrequireの呼び出しのたびにフェッチされるという印象を受けていました。それは正しいのですか?
私は実際にスクリプトを読み込んでいる間にブロックすると思っていました。私はそれを調べる情報のためにお返事します – jcvandan
私は問題を解決したとして非同期要求をしています。私は最初のページの負荷を大幅に削減しました。どうもありがとう! – jcvandan
「['require'、 'InboxView']」の意味は何ですか?私はこれのようなものを見たことはありません。ありがとう。 –