javascript – 有没有办法从使用Webpack编译的模块加载AMD模块(在运行时通过网络)?

有没有办法从使用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"
            }
        }
    ]
}
点赞