domReady を使用する前の main.js は次のとおりです。
require.config({
paths : {
loader : 'libs/backbone/loader',
jQuery : 'libs/jquery/jquery-module',
Underscore : 'libs/underscore/underscore-module',
Backbone : 'libs/backbone/backbone-module',
templates : '../Templates'
}
});
require([ 'app' ], function(app) {
app.initialize();
});
そして app.js:
define([ 'jQuery', 'Underscore', 'Backbone', 'router',
'services/Initializers/MainFrameInitializer',
'services/Initializers/FlowsViewsInitializer',
'services/Initializers/EditModuleInitializer',
'services/Sandboxes/ModulesNavigationSandbox',
'services/Sandboxes/ApplicationStateSandbox', 'DataModel/Constants' ],
function($, _, Backbone, Router, MainFrameInitializer,
FlowsViewsInitializer, EditModuleInitializer, ModulesNavigationSandbox,
ApplicationStateSandbox, Constants) {
var initialize = function() {
// Pass in our Router module and call it's initialize function
MainFrameInitializer.initialize();
FlowsViewsInitializer.initialize();
EditModuleInitializer.initialize();
ApplicationStateSandbox.startCheckStatus();
ModulesNavigationSandbox.navigate(Constants.Modules.Home);
// Router.initialize();
};
return {
initialize : initialize
};
});
プロジェクトを最適化するまで、すべて正常に動作します。私は、DOM の準備が整う前にスクリプトが実行を開始することを理解しました。これは、最適化前には真実ではありませんでした。とにかく、domReadyプラグインを使用して、DOM が最初に読み込まれるようにしたいと考えています。
しかし、どうやら、それを正しく行う方法がわかりません。main.js の新しいバージョンは次のとおりです。
require.config({
paths : {
loader : 'libs/backbone/loader',
jQuery : 'libs/jquery/jquery-module',
Underscore : 'libs/underscore/underscore-module',
Backbone : 'libs/backbone/backbone-module',
templates : '../Templates'
}
});
require([ 'domReady', 'app' ], function(domReady, app) {
domReady(app.initialize);
});
DOM の準備が整う前にapp
と並行してロードされるため、非常にきちんとしていて非常に間違っています。domReady
どうすれば修正できますか?
ありがとう。
編集
私たちの問題を理解したと思います。依存関係のコンストラクター関数は、app
DOM 依存コードを実行しないでください。関数を返すだけで、DOM 依存のロジックをキャプチャする必要があります。そのロジックはapp.initialize
、DOM の準備ができたときに実行されることが保証されている から実行する必要があります。