我有一个与多个应用程序共享的 requirejs 配置。加载应用程序时,应用程序会收到一个包含应用程序布局(以及各种其他参数)的对象。我想使用该对象为应用程序定义模块/包。
siteMap = { modules: { "foo": { ... }, "bar": { ... }, ... }, other: "stuff"
/shared/
libs/
bootstrap.js
jquery.js
…
app.js
/$appName/
foo/
index.html
edit.html
main.js
bar/
index.html
stuff.html
main.js
…
我想一定有一种方法可以像这样添加包:
// /shared/app.js
require.config({
paths: {
"bootstrap": ["//hosted.bootstrap.js","/shared/libs/bootstrap.js"],
"jquery": ["//hosted.jquery.js","/shared/libs/jquery.js"],
"siteMap": "//appName.example.com/api/siteMap"
},
…
});
require(['jquery','siteMap','bootstrap'], function($,siteMap) {
for ( var module in siteMap.modules )
{
require.config.packages[module] = siteMap.modules[module];
// OR
require.addPackage(siteMap.modules[module]);
}
});
最佳答案
您可以嵌套另一个 require()
调用以在 siteMap 告诉您应该加载什么后加载其他模块。像这样:
require(['jquery','siteMap','bootstrap'], function($,siteMap) {
// .map assumes modern browser or use of something like es5-shim
var modulesToLoad = siteMap.modules.map(function(m) { return m + '/main'; } );
require(modulesToLoad, function() {
// kick off the rest of app logic
});
});
关于javascript - RequireJS:如何动态定义/添加包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495659/