21xrx.com
2024-12-22 23:22:17 Sunday
登录
文章检索 我的文章 写文章
nodejs中router.use和app.use的区别
2023-07-05 07:26:23 深夜i     --     --
router use app use nodejs 区别

Node.js是一个非常流行的后端框架,可以用它来构建高效的RESTful API和Web应用程序。但是,对于新手来说,有时候Node.js中的某些概念可能会有些令人困惑。这篇文章将帮助你解决其中一个常见的问题:`router.use`和`app.use`的区别。

在Node.js中,我们通常使用Express框架来快速构建Web应用程序。`app.use`是Express中最常用的方法之一,它允许你向Express应用程序添加中间件。中间件是一个函数,它会在请求到达路由处理器之前或之后执行一些逻辑。例如,你可以使用`app.use`添加一个日志中间件,将每个请求的信息记录在控制台上,如下所示:


const express = require('express')

const app = express()

app.use((req, res, next) => {

 console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`)

 next()

})

app.get('/api/users', (req, res) => {

 res.json([ id: 1, name: 'Jane' ])

})

app.listen(3000, () => {

 console.log('Server started on port 3000')

})

在上面的代码中,我们通过调用`app.use`添加了一个日志中间件。当我们向`/api/users`发送GET请求时,日志中间件会记录请求的信息,然后控制台会输出以下内容:


[2021-10-01T08:00:00.000Z] GET /api/users

但是,有时候我们需要在特定路由中使用中间件,这时候就需要使用`router.use`了。`router`是一个Express中的对象,它提供了路由定义和中间件挂载的功能。使用`router.use`可以添加一个中间件到一个特定的路由中。例如,我们可以通过下面的代码向`/admin`路由添加一个`auth`中间件,它检查用户是否已经登录:


const express = require('express')

const app = express()

const router = express.Router()

router.use((req, res, next) => {

 if (!req.user) {

  res.redirect('/login')

 } else {

  next()

 }

})

router.get('/users', (req, res) => {

 res.json([ id: 1, name: 'Jane' ])

})

app.use('/admin', router)

app.listen(3000, () => {

 console.log('Server started on port 3000')

})

在上面的代码中,我们首先创建了一个名为`router`的新路由。然后,我们使用`router.use`添加了一个`auth`中间件。当用户访问`/admin/users`时,中间件会检查是否有`req.user`属性,如果没有,则重定向到登录页面。否则,它会传递给下一个中间件或路由处理程序。

综上所述,`app.use`和`router.use`都是Express中用于添加中间件的方法,但它们的作用范围不同。`app.use`将中间件添加到整个应用程序,而`router.use`将中间件添加到特定的路由中。根据你的需求,你可以选择使用适合你的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复