2012-03-27 92 views
9

我真的不能得到什么被认为是在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); 
}; 

每个原型将包含多个功能明显。

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

回答

15

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

如果你正在构建与上状态下工作,那么你或许应该只是导出一个构造函数,并允许客户创建对象,他们可以管理的实例多种方法有状态的模块。例如http模块允许您创建服务器,并且该服务器具有影响其内部状态的方法。

如果你需要有从模块中的对象的多个实例,那么你真的没有太多的选择,但出口,它返回对象实例的功能。

这与.NET等框架并没有什么不同,在这些框架中,您有文件系统(System.IO)类,它们具有用于独立操作的静态方法,如验证目录是否存在,读取文件的内容,然后是实例维护状态的类的类。