在nodejs中启动express对象之间的区别?

时间:2013-08-15 21:35:30

标签: node.js express

我可以用两种方式使用express,也就是说我可以用两种方式初始化它:

var app = express();var app = new express();

从事物的外观来看,两者都在调用构造函数,所以两者之间是否存在任何差异,我主要是要求表现明智,是否真的有任何区别,因为我似乎没有遇到任何差异。

如果没有真正的区别,为什么我看到的每个教程都是第一种方式,而不是第二种方式,因为第二种方式似乎更清晰。

1 个答案:

答案 0 :(得分:3)

在这种情况下,将express()作为函数调用更为正确。

https://github.com/visionmedia/express/blob/8a1e865e37016f279d957f04117007c36ac195e3/lib/express.js#L32

function createApplication() {
  var app = connect();
  utils.merge(app, proto);
  app.request = { __proto__: req, app: app };
  app.response = { __proto__: res, app: app };
  app.init();
  return app;
}

这基本上是一个工厂函数,而不是构造函数。使用new关键字将创建一个不必要的对象,由于createApplication返回一个对象,该对象将被立即丢弃,this关键字创建的自动new将被丢弃(这是JavaScript语言是如何工作的。)

所以答案是两个版本都可以正常工作,但这里不需要使用new