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

tru*_*ktr 6 javascript amd requirejs webpack webpack-2

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

fe,我有

import Blah from './Blah'
import AmdModule from './AmdModule'
Run Code Online (Sandbox Code Playgroud)

其中AmdModule有一个define()调用的AMD模块在哪里。我不希望webpack编译该文件,也不希望webpack将其包含在捆绑软件中。也许该文件甚至在编译时都不存在,但将存在于资产服务器上。我希望在运行时通过网络加载该文件。

有什么方法可以使Webpack做到这种事情吗?我当时想也许用RequireJS导入该文件,但随后它破坏了Webpack模块,因为没有办法等待模块加载,然后在webpack模块中异步导出某些内容。

理想情况下,我希望webpack在执行需要它的模块之前,先从网络中加载这些文件。

这样的事情可能吗?

根据需要,无法编译要通过网络加载的文件,它必须保持通过网络加载的AMD define()模块,并且保持不变,无需源映射。

Nic*_*coD 0

Webpack 可以指定不同的方法(AMD 和 CommonJs)来按需加载代码。

以下是webpack 指南的摘录:

澄清一个常见的误解:代码拆分不仅仅是将公共代码提取到共享块中。更值得注意的功能是代码拆分可用于将代码拆分为按需加载的块。

关于如何配置外部的公开方式,您可以查看此示例(webpack/examples/externals):

module.exports = {
    output: {
        libraryTarget: "umd"
    },
    externals: [
        "add",
        {
            "subtract": {
                root: "subtract",
                commonjs2: "./subtract",
                commonjs: ["./math", "subtract"],
                amd: "subtract"
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)