针对浏览器和NodeJS的单个函数模块的语法
Syntax for a single function module targeting the browser and NodeJS
如果我正在为浏览器编写JavaScript模块,我会将其分配给window
:
window.myModule = function(){ };
对于node,我将其分配给module.exports
:
module.exports = function(){ };
处理所有场景最干净的语法是什么?我现在的代码很恶心:
(function(container, containerKey){
container[containerKey] = function(){ };
})(module ? module : window, module ? 'exports' : 'myModule');
我见过这样的例子,但是导出是一个对象。
这个答案很接近,但是我想直接导出到模块(我不想要额外的限定符)。
改编自与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
上的引用。
请注意,除非碰巧在某处声明了module
,否则您当前的代码将在客户端上因ReferenceError而崩溃。
相关文章:
- 用于多个类事件Jquery的单个函数
- 使用JavaScript&jQuery在单个函数(Nodes&Stuff)中
- 多个事件,用于触发 Chrome 书签 API 中的单个函数
- Javascript 使用单个函数从另一段代码中取消 POST
- jQuery children().fadeOut() 然后执行单个函数
- JavaScript 中的单个函数多次调用
- 使用单个函数进行货币验证和格式化
- Jquery 对多个 ID 应用单个函数
- 角度 - 我可以在嵌套的 ng-repeat 中的多个对象上使用单个函数来触发该对象的 ng-show 吗?
- 如何将这些函数合并为具有属性的单个函数
- 带有两个ajax调用的单个函数
- 单个函数中有多个RegExp
- 声明对象以在单个函数中重复使用的范围
- Javascript装饰器模式-原型或单个函数
- require node.js模块在单个函数中与全局函数中对性能的影响
- 在单个函数中包装链接函数的Javascript
- 需要协助将jquery单个函数转换为具有多个函数的对象实例
- jQuery:对于类似的操作,使用单个函数而不是重复的函数
- 针对浏览器和NodeJS的单个函数模块的语法
- 在触发单个函数之前,等待所有.then()执行完毕