webpack2可以像SystemJS一样动态加载模块吗
Can webpack2 load modules dynamically like SystemJS
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那样真正的动态加载呢?
Webpack 是一个打包器,而不是加载器。它提供了许多 loader-like 功能,如 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 ...
});
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那样真正的动态加载呢?
Webpack 是一个打包器,而不是加载器。它提供了许多 loader-like 功能,如 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 ...
});