📅  最后修改于: 2023-12-03 15:30:41.602000             🧑  作者: Mango
在使用Express.js框架进行Web应用程序开发时,使用router.use()函数是经常用到的一个方法。它可以在路由器中的所有路由中添加中间件,以便对请求进行预处理。
router.use([path], callback)
router.use()函数可以允许我们在所有路由中应用中间件,在处理请求之前先处理中间件中的逻辑代码。这个函数也允许我们在应用的某部分URL上应用中间件函数,以便我们可以在只有某些请求时才执行中间件。这样就给了我们很大灵活性。
你也可以使用多个回调函数来处理请求(记得指定 next 对象)。这些回调函数可以直接调用 next('route') 方法,以绕过剩下的路由回调。 在下面的例子中,如果用户访问根路径,则显示一个消息,否则转到下一个路由。
router.use('/', function (req, res, next) {
console.log('Request URL:', req.originalUrl)
next()
}, function (req, res, next) {
console.log('Request Type:', req.method)
next()
})
你可以为路径参数指定正则表达式,此时只会匹配符合指定正则表达式的路由。例子如下:
router.use('/:id([0-9]{5})', function (req, res, next) {
console.log('ID:', req.params.id)
next()
})
在实际开发中,我们经常需要将路由分为不同的模块来开发,这时就需要指定路径与路由的方法。
var birds = require('./birds')
...
// 将路由 '/birds' 挂载到应用中
app.use('/birds', birds)
下面是一个使用router.use()函数的简单示例。当访问‘/’路径时,将响应“Hello from Middleware!”字符串。
const express = require('express');
const app = express();
const router = express.Router();
router.use('/', (req, res, next) => {
console.log('Middleware in use');
next();
});
router.get('/', (req, res) => {
res.send('Hello from Middleware!');
});
app.use('/', router);
app.listen(3000, () => {
console.log('Server started on port 3000!');
});