在 Webpack 1.x 中,我经常这样做:
require.ensure([ './mod2.js' ], ( require ) => {
setTimeout(() => {
// some later point in time, most likely through any kind of event
var data = require( './mod2.js' ); // actual evaluating the code
},1100);
}, 'myModule2');
使用这种技术,我们能够通过网络传输一个“webpack-bundle”,在稍后的某个时间点评估该捆绑包中的实际内容(JavaScript代码)。同时,使用“require.ensure”可以给捆绑包命名,在这种情况下为“myModule2”,因此当执行Webpack时,我们可以看到名称/别名。在Webpack 2.x中,新的方法是使用“System.import”。虽然我现在喜欢收到一个Promise对象,但我有两个问题与此样式有关。相当于上述代码的等效代码如下:
System.import( './mod2.js' ).then( MOD2 => {
// bundle was transferred AND evaluated at this point
});
- 现在我们如何分离转移和评估?
- 我们仍然如何命名这个捆绑包?
Webpack文档在Github上说:
完全动态的 require 现在默认失败
只有表达式的依赖项(例如 require(expr))现在会创建一个空上下文,而不是整个目录的上下文。
最好将此代码重构,因为它无法与ES6模块一起使用。 如果不可能,您可以使用ContextReplacementPlugin提示编译器正确解析。
我不确定这在这种情况下是否起作用。他们也提到了代码拆分,但很简短,他们没有提及任何“问题”或解决方法。
.then
方法呢? - Claies