我需要一些关于只在需要时使用 requireJS 加载模块的概念的帮助
这是我的 main.js
require(['jquery', 'path/somemodule'],
function($, somemodule) {
$(document).ready(function() {
somemodule.init()
})
})
在 somemodule.js 中
define(['jquery', 'path/someothermodule'], function ($, someothermodule) {
"use strict";
var somemodule;
somemodule = {
init: function () {
someothermodule.init()
}
}
return somemodule;
)}
现在 somemodule.js 和 someothermodule.js 被加载到所有页面上。如何仅在需要时加载它?
最佳答案
当您使用标准 define() 语法从 module1 请求 module2 时,module1 将不会加载/运行,直到 module2 完全加载。看起来像这样:
// inside module1
define(['module2'], function(mod2) {
// we don't get here until AFTER module2 has already been loaded
});
延迟加载 module2 的替代方案如下所示:
// inside module1
define([], function() {
require(['module2'], function(mod2) {
// we don't get here until AFTER module2 has already been loaded
});
// but we DO get here without having loaded module2
});
现在您必须稍微小心地进行编程,以确保您不会遇到任何异步问题。
在您的情况下,您可以修改 main.js 文件
require(['jquery'],
function($) {
// jquery is loaded, but somemodule has not
if(thisPageNeedsSomeModule) {
require(['path/somemodule'],
function(somemodule) {
// now somemodule has loaded
$(document).ready(function() {
somemodule.init()
})
});
}
})
关于javascript - requireJS模块加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19436607/