Javascript 使用browserify绑定依赖于外部库的UMD模块
我正在实现一个模块,该模块应该在NodeJS和浏览器(AMD/非AMD)环境中工作 它的简化版本如下所示:Javascript 使用browserify绑定依赖于外部库的UMD模块,javascript,node.js,backbone.js,browserify,Javascript,Node.js,Backbone.js,Browserify,我正在实现一个模块,该模块应该在NodeJS和浏览器(AMD/非AMD)环境中工作 它的简化版本如下所示: var-Backbone=require('Backbone'); module.exports=Backbone.Model.extend({…}); 但我不知道如何使它适用于所有环境 如果我使用全局主干(没有require),它将无法在NodeJS环境中工作 如果我使用require并从捆绑包中排除主干(使用--排除主干)-在非AMD浏览器中它将不工作(错误:找不到模块主干) 是
var-Backbone=require('Backbone');
module.exports=Backbone.Model.extend({…});
但我不知道如何使它适用于所有环境
- 如果我使用全局主干(没有
),它将无法在NodeJS环境中工作require
- 如果我使用require并从捆绑包中排除主干(使用
)-在非AMD浏览器中它将不工作(错误:找不到模块--排除主干
)主干
- 在浏览器(AMD)/NodeJS环境中使用
require('backbone')
(非AMD)浏览器中的window.Backbone
require('namespace')
为插件构建独立的bundle,但是使用一个遵循上面链接的模式的存根来代替真正的模块
bundle
.require('./namespace-stub', {expose: 'namespace'})
.require('plugin', {entry: true});
其中,namespace stub.js
是一个遵循上面链接的模式的小模块,但它不调用带有名称空间(取自AMD、CommonJS或globals)的函数,只需将其导出即可
换句话说,您可以通过替换一个模块来代替主库包来构建插件的独立捆绑包,而主库包实际上只是从任何地方查找和发现真正的库