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 }