在 Express 文档 中提到:
使用 app.use() 和 app.VERB(),将应用级别的中间件绑定到 express 实例上。
路由级别的中间件的工作方式与应用级别的中间件基本相同,只是它们绑定到
express.Router()
实例而不是 express 实例上。在上面的示例中,在应用级别创建的中间件系统可以使用以下代码在路由器级别复制。
在 Express 生成器提供的应用程序中,我在主要的 app.js
中看到了:
var routes = require('./routes/index');
app.use('/', routes);
而在./routes/index.js
中,我看到了这个:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
app.use
将中间件函数添加到应用程序级别的请求处理管道中,而router.get
将路由处理函数添加到特定路径的请求处理管道中。使用app.get
时,路由仅限于应用程序级别。因此,router.get
允许我们在应用程序级别之外定义路由,并且可以更好地组织代码。
express.Router()
和app = express()
将是同一个对象吗? - Michael Hirschler