Javascript Node.js模块插件

Javascript Node.js模块插件,javascript,node.js,Javascript,Node.js,我希望找到编写Node.js模块的最佳实践,特别是针对代码分离所遵循的javascript模式类型 我一直使用的一种风格是: var Something; Something = (function() { function Something() { } Something.prototype.some = function() { } return Something; })(); module.exports = Something;

我希望找到编写Node.js模块的最佳实践,特别是针对代码分离所遵循的javascript模式类型

我一直使用的一种风格是:

var Something;

Something = (function() {

    function Something() {
    }

    Something.prototype.some = function() {

    }

    return Something;

})();

module.exports = Something;
另一种风格是:

module.exports = {
 item: "one",
 some: function() {

 },
 another: function() {

 }
}
第二种方法在node.js中不被推荐有什么原因吗?或者有没有其他更可取的格式,其优点是什么


谢谢大家!

使用“this”关键字会遇到问题。你必须用它来代替“某物”。所以,一些你可以跑的东西。。。但是如果你想在底部运行它,你必须运行这个。run()。此操作的范围在其他函数中会发生变化,可能会变得混乱。

有几种变体,包括将属性直接指定给
导出
,将新对象文字指定给
模块。导出
和其他一些变体。在大多数情况下,它们只是语法糖或语法替代品,可以完成完全相同的事情。我个人的偏好是尽可能多地保留未受污染的纯JS代码,并将常见的JS习惯用法分开。因此,我:

function myFunction() {

}

var MY_STRING = "Forty-two";


module.exports = {
    myFunction: myFunction,
    MY_STRING: MY_STRING
};
这有点陈词滥调,容易出现维护错误,但我更喜欢它,因为我真的不喜欢在我的代码中使用CommonJS模块级名称(模块、导出)。CoffeeScript简化了最后一部分,因为您可以:

module.exports = {
    myFunction
    MY_STRING
}

没有理由将
某种东西
构造函数封装在匿名函数中。以这种方式使用匿名函数的目的是防止名称空间污染,但是节点中的模块已经被限制在它们自己的名称空间中。谢谢,好的提示,将删除它。