module.exports客户端

我创build了一个节点模块,它基本上只是一些有用的JS,也可以用在客户端。 我知道require.js可以加载common.js组件,但我不一定要强制使用我的模块客户端的每个人都需要require或common.js什么的。 我也不想强迫他们删除文件底部的module.exports = ... 别人怎么解决这个问题呢? 你只是创build2个版本,或2个“编译”版本呢? module.exports工作到处?

这是underscore.js所做的:

 if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = _; } exports._ = _; } else { root['_'] = _; } 

这已经为我工作(CoffeeScript)。 假设'命名空间'是你想要在客户端的window范围声明

 (module ? {}).exports = @Namespace = my: 'cool' module: '!' 

然后你可以在Node.js或Namespace.my === 'cool'使用require('namespace').my === 'cool' 。 这转换成JS为

 (typeof module !== "undefined" && module !== null ? module : {}).exports = this.Namespace = { my: 'cool', module: '!' }; 

我觉得这更简单:

 try { module.exports = exports = MyModule; } catch (e) {} 

该文件可以包含在浏览器和node.js中。