我正在实现一个应该在NodeJS和浏览器(AMD/NodeJS)中工作的模块。
它的简化版本如下所示:
var Backbone = require('backbone');
module.exports = Backbone.Model.extend({...});但我不知道如何使它对所有的环境保护者都有效。
require),它将不能在NodeJS env中工作。--exclude backbone) -它将不工作在浏览器非AMD(错误:找不到模块backbone)是否可以生成UMD模块,该模块将:
require('backbone') / NodeJS envwindow.Backbone (非AMD)?发布于 2015-09-25 05:38:06
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),它只需导出它。
换句话说,通过替换一个模块来构建插件的独立包,而主库包实际上只是查找和发现真正的库,不管它在哪里都是可用的。
https://stackoverflow.com/questions/29524513
复制相似问题