【问题标题】:What is good practice when writing a node.js module编写 node.js 模块时有什么好的做法
【发布时间】:2013-09-25 04:11:01
【问题描述】:

在为 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);
};

显然,每个原型都包含多个函数。

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

【问题讨论】:

    标签: node.js


    【解决方案1】:

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

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

    如果您需要从一个模块中获得多个对象的实例,那么您真的别无选择,只能导出一个返回该对象实例的函数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2012-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多