Webpack require.sure使用动态字符串路径



我需要动态地要求使用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);
});

最新更新