“加载”是一个有点模糊的词。
如果这意味着请求是针对模块的。其指定。只要在任何地方都需要模块,无论是作为模块定义的依赖项还是带有模块名称的 require 调用,following 都会返回 true。
require.specified(moduleID);
一旦模块被解析并加载到内存中,或者换句话说,一旦模块的源被获取并加载并且模块的定义函数完成执行。以下返回真。
require.defined(moduleID);
您也可以在requirejs.s.contexts._.defined
. 像这样检查 lib 的数据结构有点笨拙,但可以在浏览器(firebug)中使用,以防您想确保模块已加载。我已经用 firebug 和 requirejs 2.1.4 进行了测试。
console.log(window.requirejs.s.contexts._.defined['SOME_MODULE']);
此方法还有助于使用 firebug 检查模块的内部内容(对象/原型的属性)。
如果要求是确保在进一步执行代码之前加载关键模块。带有成功回调的 require 调用有效。
require([moduleID], function(moduleExport){
//The module is loaded, proceed to the next step
//This is also an inherent load check
}, function (error) {
//The module cant be loaded, handle the exception case
});
以下片段显示了上述每一个
console.log(require.specified('TEST_MODULE')); //false if the module isn't required yet
require(['TEST_MODULE'], function(TEST_MODULE){
console.log(require.defined('TEST_MODULE')); //true
console.log(require.s.contexts._.defined['TEST_MODULE'] ? true : false); //true
}, function (error) {
console.log('TEST_MODULE cant be loaded');
});
console.log(require.defined('TEST_MODULE')); //false if the module isn't ready yet
console.log(require.specified('TEST_MODULE')); //true
** 可以使用 requirejs 代替 require,以防在全局范围内将 require 用于其他目的。
** 以上所有内容均假设您在测试的任何地方都有对 require/requirejs [global] 的引用。