0

如果我正在为浏览器编写 JavaScript 模块,我会将其分配给window

window.myModule = function(){ };

对于节点,我将其分配给module.exports

module.exports = function(){ };

处理所有场景的最简洁的语法是什么?我当前的代码非常恶心:

(function(container, containerKey){
    container[containerKey] = function(){ };
})(module ? module : window, module ? 'exports' : 'myModule');

我见过这样的例子,但导出是一个对象。

这个答案很接近,但我想直接导出到模块(我不想要额外的限定符)。

4

1 回答 1

0

改编自与咖啡脚本的多个文件通信

基本上,我们根据所处的环境选择是运行服务器端代码还是客户端代码。这是最常见的方法:

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碰巧在某处声明。

于 2013-06-06T17:59:34.950 回答