关于webpack代码分割的一点疑惑

在使用webpack 的Code Splitting功能时,我写了如下代码:

//因为模块路径比较长,可以重复利用,就定义成一个变量
var _moduleA = './components/A.js'; 
require.ensure([_moduleA],function(require){
    var ModuleA = require(_moduleA);
    //...其他操作
});

然后执行webpack -w命令就发现了一些异常的地方,webpack处理了所有模块(包含未用到的图片,一些react demo模块),控制台打出警告:

WARNING in ./src/main.js
Critical dependencies:
52:2-9 require function is used in a way in which dependencies cannot be statically extracted
 @ ./src/main.js 52:2-9

大概是:不安全的依赖,不能被静态导入

能解释下其中涉及的原理吗?

我猜测是不是这样:webpack先查找所有依赖模块(正则匹配),如果发现这种不安全依赖的写法(依赖模块是变量),就把所有模块都编译好。防止js真正执行的时候找不到

阅读 3.4k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题