gpt4 book ai didi

javascript - 如何正确使用domReady requireJS插件

转载 作者:搜寻专家 更新时间:2023-11-01 04:46:46 24 4
gpt4 key购买 nike

这是我在使用 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
};
});

一切正常,直到我 optimize该项目。我已经发现,脚本在 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);
});

非常简洁但非常错误,因为 app 在 DOM 准备好之前与 domReady 并行加载。

我该如何解决?

谢谢。

编辑

我想我已经理解了我们的问题。 app 依赖项的构造函数不应运行任何依赖 DOM 的代码。它们应该只返回函数,捕获依赖于 DOM 的逻辑。该逻辑应从 app.initialize 执行,保证在 DOM 准备就绪时运行。

最佳答案

也许我遗漏了一些东西,但这样做不会让你的生活变得更轻松吗:

require(['jQuery', 'app' ], function(jQuery, app) {
jQuery(function ($) {
app.initialize();
});
});

在你的 main.js 中?

关于javascript - 如何正确使用domReady requireJS插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9361737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com