Node.js模块插件
我希望找出编写Node.js模块的最佳实践,特别是用于代码分离的JavaScript模式types。
我一直在使用的一种风格是这样的:
var Something; Something = (function() { function Something() { } Something.prototype.some = function() { } return Something; })(); module.exports = Something;
另一种风格是:
module.exports = { item: "one", some: function() { }, another: function() { } }
是否有任何理由为什么第二种方法不会被build议,在node.js? 还是有另一种格式是优先的,优点是什么?
谢谢!
您使用“this”关键字遇到问题。 你必须使用,而不是“东西”。 所以Something.some()你可以运行…但是如果你想在底部运行,你必须运行this.run()。 其他function的这种变化的范围,可以得到混乱。
有几个变体,包括直接分配属性到exports
,分配一个新的对象文字到module.exports
和其他几个。 在大多数情况下,它们只是语法糖或语法替代品,完全相同的事情。 我的个人偏好是尽可能多地保留我的代码,使其不受污染的纯JS,并保持CommonJS的成语不同。 所以我这样做:
function myFunction() { } var MY_STRING = "Forty-two"; module.exports = { myFunction: myFunction, MY_STRING: MY_STRING };
这有点像boilerplate-y,容易出现维护错误,但是我更喜欢它,因为我真的不喜欢把CommonJS模块级别名称(模块,导出)洒在我的代码中。 CoffeeScript使最后一部分更容易,因为你可以这样做:
module.exports = { myFunction MY_STRING }