请教Express中应用级路由和Route中间件的路由的区别
各位朋友,最近才学习Express,在自己实践的时候遇到了一个问题。在官网上介绍了最基本的路由方式,示例使用的是应用级路由,我按照示例写,例如:
app.use('/', function (req, res){
res.send('helloworld');
})
这样,在访问首页时,会显示HelloWorld。但是,我使用express-generator生成的express项目中,使用的是Route中间件作为路由的。它是这样写的:
var routes = require('./routes/index');
app.use('/', routes);
而routes模块上写的是:
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;
我有点困惑,这两种方式的路由到底有什么区别?我知道,使用express.Router()做的路由会比app.use('', function)
这样的应用级路由要早,它会优先于所有应用级路由执行。具体的原理大神们能指点一二吗?
为什么使用app.use('/', function)
的方式会在http://127.0.0.1:3000/login的请求时仍然会响应,而使用Route作为路由时,显示的是404呢?
9 回复
@daileimail 多谢这位朋友~我貌似明白啦。
另外,如果是:
var route = express.Router();
route.get('/', function (){
//....
});
app.use('/login', route);
貌似也可以啊,不知道这两个有什么区别。请教一下