node.js - 编写 node.js 模块时有什么好的做法

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

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

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

最佳答案

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

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

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

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

关于node.js - 编写 node.js 模块时有什么好的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887748/

相关文章:

javascript - Socket.io 响应 : How to get server to respond to multiple clients upon receiving info from all clients?

javascript - Blockchain Tierion API - 使用 Node.js 实时文件上传

javascript - 如何使用 AngularJS 推送到 MongoDB 数组?

node.js - 如何通过 Homebrew 软件安装 LTS 版本的 nodejs

node.js - 在重定向之前设置 Express 响应 header

node.js - 在 Visual Studio 代码中使用 typescript 和 webpack 调试 nodejs 项目的正确方法

javascript - node.js fs.existsSync 始终为 false

javascript - 从 Sequelize 方法返回基于 promise 的回调?

node.js - 如何使用nodemailer正确发送 session 请求?

node.js - Socket.io 0.9.x 文档在哪里?