我需要动态地要求使用WebPack的异步加载模块。我的目标是循环循环并加载这些模块(这是出于我的反应器目的,在这里不重要)。
这是我的代码:
const arr = ['some-module', 'module-2'];
arr.map(moduleName => {
require.ensure([], require => {
if(process.env.IS_BROWSER) { //for react server-render because of babel 6
cb(null, require(moduleName));
}
else {
cb(null, require(moduleName).default);
}
});
}
它在服务器上运行良好,但是在前端,没有制作和加载其他捆绑包。您知道如何解决吗?谢谢。
您可能知道WebPack是静态模块bundler,所有模块都应静态解析。它不支持解决完全动态的资产表达式。
它可以在静态上解析一些动态表达式,例如
var a = 'a';
require.ensure([], function (require) {
// all dynamic entry modules inside /dynamic/ folder
console.log(require('./dynamic/' + a));
});
如果要生成一个每个模块的块,则可以使用require.context与捆绑包装组合。
var a = './a';
require.context('bundle!./app')(a)(function(moduleTest){
console.log(moduleTest);
});