将依赖外部库的UMD模块与browserfy捆绑在一起
Bundle UMD module that depends on external library with browserify
我正在实现一个模块,该模块应该在NodeJS和Browser(AMD/non-AMD)环境中工作。
它的简化版本看起来是这样的:
var Backbone = require('backbone');
module.exports = Backbone.Model.extend({...});
但我不知道如何让它适用于所有环境。
- 如果我使用全局主干(没有
require
),它将无法在NodeJS环境中工作 - 如果我使用require并从捆绑包中排除主干(使用
--exclude backbone
),它将无法在非AMD浏览器中工作(错误:找不到模块backbone
)
是否可以生成UMD模块,该模块将:
- 在浏览器(AMD)/NodeJS环境中使用
require('backbone')
- 浏览器中的
window.Backbone
(非AMD)
umd包有一个用于jQuery插件的模式,这些插件可以在非AMD、AMD或CommonJS环境中工作。例子是jquery,但是您可以将它调整为您自己的命名空间模块,而不是jquery。
https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js
我过去处理过的一种方法是使用require('namespace')
为插件构建独立的捆绑包,但使用遵循上面链接的模式的存根来代替真正的模块。
bundle
.require('./namespace-stub', {expose: 'namespace'})
.require('plugin', {entry: true});
其中namespace-stub.js
是一个遵循上面链接的模式的小模块,但它可以直接导出它,而不是调用带有名称空间的函数(取自AMD、CommonJS或globals)
换言之,您通过用一个模块代替主库包来构建插件的独立捆绑包,主库包实际上只是从任何可用的地方寻找并发现真正的库。
相关文章:
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 如何将具有相同功能的两个select html标签的两个JS组合在一起
- 将3个函数合并在一起
- 使用javascript将两个输入的日期添加在一起
- 避免将lib依赖项与webpack+handlebas加载程序捆绑在一起
- Grunt browserfy在需要react bootstrap typeahead时失败
- PHP、Javascript和SQL代码混杂在一起
- 有没有办法把它们串在一起,这样它们基本上可以同时工作
- PHP:同时循环元素粘在一起
- 把两个数字加在一起,得到5+10=510,而不是15
- 我怎样把这些剧本写在一起
- 安全地包装JS文件,这样当它们连接在一起时,它们仍然可以工作
- 如何将遗留的js文件与webpack捆绑在一起
- 在 JavaScript 中使用侦听器将输入字段链接在一起
- 如何将表链接在一起
- 如何有效地匹配两个不同 JavaScript 对象上的 id,并将它们合并在一起
- 我想通过单击按钮将 2 个 php 文件链接在一起
- JavaScript 将字符串与退格符连接在一起
- 通过 jQuery Find and Replace 将文本 URL 与 标记包装在一起
- 如何将未缩小和缩小的js文件与browserfy捆绑在一起