关于Express的路由优先级混淆

关于Express的路由优先级混淆,express,Express,全部: 我对Express.js很陌生,如果我指定了如下路线: var routes = require('./routes/index'); app.use('/', routes); app.get('/hello', function(req, res){res.send("hello");}); 在index.js中,我设置了如下路由: /* GET home page. */ router.get('/hello', function(req, res, next) { res.

全部:

我对Express.js很陌生,如果我指定了如下路线:

var routes = require('./routes/index');
app.use('/', routes);
app.get('/hello', function(req, res){res.send("hello");});
在index.js中,我设置了如下路由:

/* GET home page. */
router.get('/hello', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;
这似乎都处理相同的url请求,我想知道Express如何决定使用哪个处理程序


谢谢

express中的所有中间产品和路线都是自上而下堆叠和执行的

router.get('/hello', (req, res) => {
    res.send('This get executed');
});
router.get('/hello', (req, res) => {
    res.send('This will NOT get executed since you are ending the response with res.send in the route above');
});

当您使用app.get('/hello',时,这意味着您正在设置中间件,该中间件将在向'/hello'发出任何请求之前运行。所以第一个app.get将被使用并打印“hello”&router.get将永远不会作为app.get调用。get将以“hello”文本结束响应。@roxysam谢谢,但是当我测试它时,我不知道它为什么会进入router.get()谢谢,所以当涉及到我的情况时,哪一个会首先被执行,为什么?外行规则-你首先在编辑器上看到的规则,得到执行。谢谢,所以app.use(“/”,u uu)中的处理程序首先得到。