有没有一种方法可以在RequireJS中定义一个模块,以“动态”方式加载其他模块?如果有,优化器(r.js)如何理解何时需要包含模块?
例如,让dynModules
是一个定义名称/路径对的模块:
define([], function () {
return ['moduleA', 'moduleB']; // Array of module names
});
另一个模块将根据数组动态加载模块,但这 不起作用:
define(['dyn_modules'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});
...给了我:
未捕获的错误:模块名“moduleA”尚未为上下文加载。请使用require([])。 http://requirejs.org/docs/errors.html#notloaded
我可以解决这个错误,但它不再是“动态的”了:
define(['dyn_modules', 'moduleA', 'moduleB'], function (dynModules) {
for(name in dynModules) {
var module = require(path); // Call RequireJS require
}
// ...
});