有没有办法从使用Webpack编译的模块加载AMD模块(在运行时通过网络)?
f.e.,我有
import Blah from './Blah'
import AmdModule from './AmdModule'
其中AmdModule是一个AMD模块,其中只有一个define()调用.我不希望webpack编译该文件,我不希望webpack将它包含在bundle中.也许该文件在编译时甚至不存在,但会存在于资产服务器上.我希望通过网络在运行时加载该文件.
有没有办法让Webpack做那种东西?我想也许用RequireJS导入该文件,但随后它打破了Webpack模块,因为没有办法等待模块加载然后在webpack模块中异步导出.
理想情况下,我希望webpack在执行需要它的模块之前等待从网络加载这些文件.
这样的事情可能吗?
根据要求,无法编译要加载的网络文件,它必须保持通过网络加载的AMD define()模块,不受影响,不需要源映射.
最佳答案 Webpack可以指定不同的方法(AMD和CommonJs)来按需加载代码.
这是the webpack guide的摘录:
To clarify a common misunderstanding: Code Splitting is not just about
extracting common code into a shared chunk. The more notable feature
is that Code Splitting can be used to split code into an on demand
loaded chunk.
关于如何配置外部暴露的方式,您可以查看此示例(webpack/examples/externals):
module.exports = {
output: {
libraryTarget: "umd"
},
externals: [
"add",
{
"subtract": {
root: "subtract",
commonjs2: "./subtract",
commonjs: ["./math", "subtract"],
amd: "subtract"
}
}
]
}