webpack2可以像SystemJS一样动态加载模块

时间:2017-01-16 16:35:03

标签: javascript webpack-2

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之类的真正动态加载?

1 个答案:

答案 0 :(得分:1)

Webpack是一个捆绑器,它不是一个加载器。它提供了许多类似于加载器的函数,如requireimport,因此捆绑的模块可以相互交互,但这就是它。您正在寻找的是一个实际的装载机。

一种可能性是使用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 ... });