如果我正在为浏览器编写JavaScript模块,我会将其分配给window
:
window.myModule = function(){ };
对于节点,我将其分配给module.exports
:
module.exports = function(){ };
处理所有方案的最简洁的语法是什么?我目前的代码非常粗略:
(function(container, containerKey){
container[containerKey] = function(){ };
})(module ? module : window, module ? 'exports' : 'myModule');
I've seen examples like this,但导出是一个对象。
This answer已关闭,但我想直接导出到模块(我不想要额外的限定符)。
答案 0 :(得分:0)
改编自Multiple Files communication with coffeescript
基本上,我们根据我们所处的环境选择是运行服务器端代码还是客户端代码。这是最常用的方法:
if(typeof module !== "undefined" && module.exports) {
//On a server
module.exports = ChatService;
} else {
//On a client
window.ChatService = ChatService;
}
获得它:
if(typeof module !== "undefined" && module.exports) {
//On a server
ChatService = require("ChatService.coffee");
} else {
//On a client
ChatService = window.ChatService;
}
可以跳过第二个块的else子句,因为ChatService
已经引用了附加到window
的引用。
请注意,您的当前代码将在客户端上因ReferenceError而崩溃,除非恰好在某处声明了module
。