📅  最后修改于: 2023-12-03 15:00:40.451000             🧑  作者: Mango
在Express.js中,express.Router()
函数允许我们创建可挂载的路由处理程序。使用路由器,我们可以将路由逻辑分组到单个文件中,使应用程序更加模块化,易于维护和测试。
使用express.Router()
函数可以创建一个新的路由器实例。我们可以在该实例上定义路由,然后将该路由器挂载到应用程序中。
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello World!');
});
router.get('/about', (req, res) => {
res.send('About Us');
});
module.exports = router;
上述代码定义了一个路由器,该路由器包含两个路由 - '/'
和'/about'
。当应用程序收到GET请求时,router.get()
函数将负责处理该请求。
要将路由器挂载到应用程序中,我们可以使用应用程序实例的use()
方法。
const express = require('express');
const app = express();
const router = require('./router');
app.use('/', router);
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
上述代码将路由器router
挂载到应用程序的根路径'/'
。现在,当我们向应用程序发出GET请求时,它会将请求传递给路由器以处理。
类似于应用程序级别的中间件,我们可以在路由器级别定义中间件。这些中间件将针对特定路由器中的请求进行操作。
const express = require('express');
const router = express.Router();
router.use((req, res, next) => {
console.log('Logging...');
next();
});
router.get('/', (req, res) => {
res.send('Hello World!');
});
module.exports = router;
上述代码中,我们在路由器中定义了一个中间件函数。这个函数将被应用于路由器中的每个请求,输出日志消息。要定义路由器级别的中间件,我们可以使用router.use()
方法。
就像应用程序级别的路由一样,我们可以在路由器中定义参数化路由。使用:parameterName
语法,我们可以定义一个带有参数的路由器,允许我们在路由上从客户端接收参数。
const express = require('express');
const router = express.Router();
router.get('/:id', (req, res) => {
res.send(`The ID you requested is ${req.params.id}`);
});
module.exports = router;
上述代码定义了一个参数化路由,允许我们在路由上接收一个名为id
的参数。在请求到达时,req.params.id
将包含该参数的值。
路由器是一种允许我们将路由逻辑组织到模块化单元中的机制。使用路由器,我们可以编写可重用的路由代码,以改善应用程序的可维护性和可测试性。Express.js express.Router()
函数提供了一种创建和挂载路由器的简便方法。