我正在阅读Express.JS 4.x API并且很好奇他们是如何设置它的。以下是我对正在发生的事情的理解: 在Express.JS 4.x API中的示例代码中,Express模块被导入并分配给变量express。然后,该变量用于调用express构造函数并分配给变量app。
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
app.listen(3000);
如果快速模块直接分配给应用程序或上面的分配只是为了便于阅读,是否有区别?如下:
var app = require('express')();
答案 0 :(得分:2)
节点模块可以返回构造函数,该构造函数既是构造函数又具有属性(因为函数是可以具有属性的对象)。
您的第一个方法允许您访问构造函数可能具有的任何其他属性或方法。第二种方法不允许,因为它不保留对构造函数的引用。
在ExpressJS文档中,我确实看到了一些通过express对象引用的项目,例如:
var express = require('express');
var app = express();
var router = express.Router();
router.get('/', function (req, res, next) {
next();
});
app.use(router);
和
var express = require('express');
var app = express();
app.use(express.static(__dirname + '/public'));
如果您不需要保留对构造函数的引用以便访问它上面的其他方法,则两个选项之间没有区别,因为它们执行相同的代码。你的第二个没有保留对稍后可用于访问其他事物的中间步骤的引用。