使用module.exports的三种不同方式之间的差异

时间:2013-08-29 06:01:57

标签: node.js

我看到有些人使用不同的方法创建一个类,但我真的不知道使用内联,使用名称或没有函数名称的差异或优势。例如:

// Style 1. myclass.js. Use module.exports on a var
var myClass = function MyClass() {
   return something;
};

module.exports = myClass;

// Style 2. myclass.js. inline module.exports
module.exports = function MyClass() {
  return something;
};

// Style 3. myclass.js. inline module.export without function name
module.exports = function () {
   return something;
};

用法:

var MyClass = require('myclass');
var classObj = new MyClass();

任何人都可以解释或告诉我差异吗?我想使用函数名称会给出更多关于堆栈跟踪的信息吗?

由于

1 个答案:

答案 0 :(得分:3)

差异很小。

#1和#2之间的区别在于myClass(变量)可以在模块中的其他位置使用。

#2和#3之间的区别在于该函数有一个名称,因此:

  1. 如果您愿意(虽然在#3中不可能),使用递归会更容易
  2. 正如你所说,你会看到更漂亮的堆栈跟踪。
  3. (构造函数有时是递归的,你可以使用和不使用new来调用它们,而且它们首先检查thisMyClass的实例,如果没有调用用new)递归递归。