编写node.js模块时的好习惯是什么

时间:2012-03-27 10:28:01

标签: 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);
};

每个原型显然会包含多个功能。

这样的事情会被视为良好做法吗?

1 个答案:

答案 0 :(得分:15)

这实际上取决于您正在撰写的模块类型。导出多个函数适用于具有多种方法但几乎没有内部状态可以管理的实用程序模块。想想像fs(文件系统)模块。有许多文件系统方法,但它们几乎都是独立的,并且没有共享状态。

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

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

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

相关问题