根据 webpack 文档。
不可能使用完全动态的导入语句,例如
进口(富)。因为 foo 可能是任何文件的任何路径
您的系统或项目。
import() 必须至少包含一些关于
模块所在的位置。
https://webpack.js.org/api/module-methods/#dynamic-expressions-in-import.
所以下面的 sn-p 工作
import("./components/About").then(component => {
console.log(component, "loaded successfully");
});
下面的 sn-p 不起作用
let a = "./components/About";
import(a).then(component => {
console.log(component, "loaded successfully");
});
我在任何地方都找不到说明上述代码有效的确切原因的解释。但我的直觉是 webpack 不知道变量 a 的数据类型(它必须是一个字符串),因此无法在动态导入中使用它。
以上代码被转译为
let a = "./components/About";
__webpack_require__("./src lazy recursive")(a).then(component => {
console.log(component, "loaded successfully");
});
下面的代码确实有效(将变量嵌入到字符串文字中)..
let a = "./components/About";
import(`${a}`).then(component => {
console.log(component, "loaded successfully");
});
这会被转译为
let a = "./components/About";
__webpack_require__("./src lazy recursive ^.*$")("".concat(a)).then(component => {
console.log(component, "loaded successfully");
});