Javascript 将jQuery.load与RequireJS一起使用
我经常这样编写引导程序小部件:Javascript 将jQuery.load与RequireJS一起使用,javascript,jquery,requirejs,Javascript,Jquery,Requirejs,我经常这样编写引导程序小部件: $(window).load(function () { doStuff(); }); 当我编写依赖于要初始化的应用程序其余部分的小部件时,通常会出现这种情况 我最近开始使用RequireJS,但我不知道如何像上面的代码那样附加回调。我查看并尝试了domReady插件,但是它不适合我的用例,因为回调是在DOM就绪时调用的,而不是在加载所有资源时调用的 以下是我迄今为止所尝试的: // Using domReady (main.js): require(['r
$(window).load(function () {
doStuff();
});
当我编写依赖于要初始化的应用程序其余部分的小部件时,通常会出现这种情况
我最近开始使用RequireJS,但我不知道如何像上面的代码那样附加回调。我查看并尝试了domReady插件,但是它不适合我的用例,因为回调是在DOM就绪时调用的,而不是在加载所有资源时调用的
以下是我迄今为止所尝试的:
// Using domReady (main.js):
require(['require', 'domReady'], function (require, domReady) {
'use strict';
domReady(function () {
require(['app'], function (App) {
console.log(window);
App.initialize();
});
});
});
// Using jQuery (main.js)
// Note, this does not work.
require(['jquery', 'app'], function ($, App) {
'use strict';
$(window).load(function () {
App.initialize();
});
});
鉴于上述情况,使用
$(window.load()
和RequireJS实现的正确方法是什么?如果我了解您的正确性,您可以检查方法以获得结果;所以,在加载jquery运行之后
jQuery.holdReady(true);
稍后附加处理程序,该处理程序应仅在加载后运行
jQuery(function($) {
App.initialize(); //will run only after window.load;
}
在加载处理程序设置中:
jQuery(window).load(function () {
jQuery.holdReady(false); //fire all domready holded events
});
不完全是。我的问题是将回调传递给$(window).load,它似乎无法按预期工作。您给出的示例延迟了DOM就绪调用,但不等待加载其他资源。是否要等待RequireJS完成加载脚本?运行
jQuery.holdReady(false)
在所有加载的脚本上的RequireJS回调中,或者创建一个小的监视数组,将对其进行检查,以确保load()和回调都被激发,当两者都被激发时,释放domready保持。请稍微处理一下您遇到的麻烦,因为我不确定您如何使用load()。我想等待,如上面的示例所示,在加载所有资源时调用App.initialize,而不仅仅是那些由RequireJS加载的资源。我正在编写一个小部件/模块,它将嵌入到一个更大的应用程序中,小部件依赖于要加载的资源,而不是由RequireJS管理的资源。小部件的现有实现,不使用RequireJS,按预期工作(在$(window.load()中初始化小部件);这就是我的意思,setup watcher,它将在require callback和in window.load()上被调用,两者都应该设置标志,如果标志指示两个事件都被触发,运行onload事件处理程序,它将保证window.load()和所需脚本都被加载。