有没有办法从使用Webpack编译的模块加载AMD模块(在运行时通过网络)?
f.e.,我有
import Blah from './Blah'
import AmdModule from './AmdModule'
其中 AmdModule
是一个AMD模块,其中只有一个 define()
调用 . 我不希望webpack将其包含在捆绑包中 . 也许该文件在编译时甚至不存在,但会存在于资产服务器上 . 我希望通过网络在运行时加载该文件 .
有没有办法让Webpack做那种东西?我想也许用RequireJS导入该文件,但随后它打破了Webpack模块,因为没有办法等待模块加载然后在webpack模块中异步导出 .
理想情况下,我希望webpack在执行需要它的模块之前等待从网络加载这些文件 .
这样的事情可能吗?
根据要求,无法编译要加载的网络文件,它必须保持通过网络加载的AMD define()模块,不受影响,不需要源映射 .
2 回答
Webpack可以指定不同的方法(AMD和CommonJs)来加载代码 on demand .
以下是the webpack guide的摘录:
关于如何配置外部暴露的方式,您可以查看此示例(webpack/examples/externals):
是的,你可以,只需添加到外部:
我正在使用它来打包我的模块/插件以在框架中加载,并且模块使用目标框架中的一些模块,因此webpack不应该包含模块 . 外部确实避免在我的插件模块中包含框架模块,并且仍在等待运行时加载这些模块 .
外部是完全适合它:
@NicoD:外部表示不应由webPack捆绑但仍由生成的捆绑包请求的依赖项 . 要获得模块,您必须使用装载机作为script.js