Express js 中的 app.use()、app.get()、router.get() 和 router.use() 有什么区别?

Man*_*ino 5 javascript node.js express

我仍然不知道这些端点之间的区别,并且它们的终点都是路线但我不知道我应该在何时何地使用它?在什么场景下?

app.use('/user/:id', function (req, res, next) {
  console.log('Request Type:', req.method)
  next()
});
app.get('/user/:id', function (req, res, next) {
  res.send('USER')
});

router.get('/user/:id', function (req, res, next) {
  res.send('USER')
});

router.use('/user/:id', function (req, res, next) {
  res.send('USER')
});
Run Code Online (Sandbox Code Playgroud)

你们可以帮我解决这个问题。

小智 0

.use() 和 .get() 的区别在于 .use() 将侦听任何类型的请求,而 .get() 将仅侦听 GET 请求,例如 .post() .put() 等。

对于路由器,你可以将其视为子路由。

例如你可以做这样的事情。

router.get('/:id', (req, res, next) => {res.send('user')})
router.post('/', (req, res, next) => {/* some create user logic */})

app.use('/user', router) // if you do this routers will match '/user/:id' and '/user' path
Run Code Online (Sandbox Code Playgroud)

当然,您可以在同一个应用程序中拥有多个路由器。所以你的代码可以更加结构化。