1

我希望找出编写 Node.js 模块的最佳实践,特别是代码分离要遵循的 javascript 模式类型。

我一直在使用的一种风格是:

var Something;

Something = (function() {

    function Something() {
    }

    Something.prototype.some = function() {

    }

    return Something;

})();

module.exports = Something;

另一种风格是:

module.exports = {
 item: "one",
 some: function() {

 },
 another: function() {

 }
}

在 node.js 中,是否有任何理由不建议使用第二种方法?还是有另一种更受欢迎的格式,有什么优势?

谢谢!

4

2 回答 2

1

您在使用“this”关键字时遇到问题。您必须使用它而不是“某物”。所以Something.some() 你可以运行...但是如果你想在底部运行它,你就必须运行this.run()。this 的范围在其他功能中会发生变化,并且可能会变得混乱。

于 2012-11-08T16:16:40.487 回答
1

有几种变体,包括将属性直接分配给exports,将新的对象文字分配给module.exports和其他一些。在大多数情况下,它们只是完成完全相同的事情的语法糖或语法替代品。我个人的偏好是尽可能多地保留我的代码不受污染的纯 JS,并将 CommonJS 习语分开。所以我这样做:

function myFunction() {

}

var MY_STRING = "Forty-two";


module.exports = {
    myFunction: myFunction,
    MY_STRING: MY_STRING
};

它有点样板,容易出现维护错误,但我更喜欢它而不是替代品,因为我真的不喜欢将 CommonJS 模块级别的名称(模块、导出)散布在我的代码中。CoffeeScript 使最后一部分变得更容易,因为您可以这样做:

module.exports = {
    myFunction
    MY_STRING
}
于 2012-11-08T16:19:51.930 回答