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

标签 javascript webpack requirejs amd webpack-2

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

我有

import Blah from './Blah'
import AmdModule from './AmdModule'

其中 AmdModule 是一个 AMD 模块,其中有一个 define() 调用。我不希望 webpack 编译那个文件,也不希望 webpack 将它包含在包中。也许该文件在编译时甚至不存在,但会存在于 Assets 服务器上。我希望该文件在运行时通过网络加载。

有什么方法可以让 Webpack 做那种事情吗?我在想也许可以用 RequireJS 导入那个文件,但是它会破坏 Webpack 模块,因为没有办法等待模块加载然后在 webpack 模块中异步导出一些东西。

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

这样的事情可能吗?

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

最佳答案

是的,你可以,只需添加到外部:

module.exports = {
   ... (all config stuff),
   output: {
     filename: "[name].js",
     path: path,
     libraryTarget: 'amd'
   },
   externals : [
      'module the AmdModule is requiring'
  ]
}

我正在使用它来打包我的模块/插件以加载到框架中,并且模块使用目标框架中的一些模块,因此 webpack 不应包含这些模块。 Externals 确实避免在我的插件模块中包含框架模块,并且仍在等待这些模块在运行时加载。

Externals 正适合它:

Applications and externals

You can also use the externals option to import an existing API into applications. For example, if you want to use jQuery from a CDN via a separate tag while still explicitly declaring it as a dependency via require("jquery"), you would specify it as external like so: { externals: { jquery: "jQuery" } }.

@NicoD: External 表示不应该被 webPack 捆绑但仍然被生成的包请求的依赖。要获取模块,您必须使用加载程序作为 script.js

关于javascript - 有没有办法从使用 Webpack 编译的模块(在运行时通过网络)加载 AMD 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41860191/

相关文章:

javascript - 对样式化组件使用自定义文档时未传递 Prop

javascript - UglifyJS 压缩

typescript - 在 TS 3.2.2 中使用 --isolatedModules 时无法重新导出类型

javascript/jquery 变异并在 var 中追加 html

javascript - 如何在javascript中检查对象中是否存在键

angular - Webpack 包分析器 "+ n Modules"

javascript - 如何使用 webpack 将文件复制到分发文件夹?

javascript - 咕噜 requirejs 'define is undefined'

javascript - 需要 js 和 Knockout js - 无法从服务器获取数据

javascript - Require 和 Backbone - 动态加载 jQuery Mobile