webpack1无法按需加载模块,就像我可以使用SystemJS
一样:
function a() {
var moduleName = getDynamicModuleName();
SystemJS.import(moduleName).then(function (m) {
console.log(m);
});
}
基于on this article似乎webpack2
也可以这样做,所以我提出以下内容:
function a() {
var moduleName = getDynamicModuleName();
import(moduleName).then(function (m) {
});
}
但是,webpack为moduleName
创建了包并发出警告:
3:4-22 Critical dependency: the request of a dependency is an expression
所以这不是完全动态的,它是代码分割的工作方式。那么webpack2是否支持SystemJS之类的真正动态加载?
答案 0 :(得分:1)
Webpack是一个捆绑器,它不是一个加载器。它提供了许多类似于加载器的函数,如require
和import
,因此捆绑的模块可以相互交互,但这就是它。您正在寻找的是一个实际的装载机。
一种可能性是使用webpack的script-loader
:
require(`script!${moduleUrl}`, function() {
...
})
另一种可能性是使用独立于webpack的实际加载器,例如little-loader
:
var load = require("little-loader");
load("http://example.com/foo.js", function (err) {
// ... your code ...
});