编写node.js模块时,最好的做法是什么?

在node.js中编写模块时,我无法真正掌握什么被认为是好的和坏的做法。 有些模块似乎使用了大量的输出,而其他模块只使用一个,等等。

例:

var self; var mymodule = function() { self = this; this.value1 = something; this.value2 = somethingElse; }; module.exports.init = function() { return new mymodule(); }; mymodule.prototype.functionalityType1 = { someFunction: function(callback) { var a = self.value1; anotherfunction(a, callback); }, }; mymodule.prototype.functionalityType2 = { someFunction: function(callback) { var a = self.value2; anotherfunction(a, callback); }, }; var anotherfunction = function(v, callback) { // do stuff with v callback(result); }; 

每个原型显然会包含多个function。

这样的事情会被认为是好的做法吗?

这真的取决于你正在写什么样的模块。 导出多个函数适用于具有多个方法但很less或没有内部状态pipe理的公用程序模块。 想想像fs (文件系统)模块。 有很多文件系统方法,但是它们几乎都是独立的,没有共享状态。

如果你正在构build一个有状态的模块,并且有多个方法可以在状态上运行,那么你应该直接导出一个构造函数,然后让客户端创build一个他们可以pipe理的对象的实例。 一个例子是http模块,它允许你创build一个服务器,并且该服务器有影响其内部状态的方法。

如果你需要在一个模块中有一个以上的对象实例,那么你真的没有多lessselect,只能导出一个返回对象实例的函数。

这与.NET之类的框架并没有什么不同,在这个框架中,你有文件系统(System.IO)类,这些类有独立操作的静态方法,比如validation目录是否存在,读取文件的内容,然后是类的实例类保持状态。