📜  Express.js express.Router()函数(1)

📅  最后修改于: 2023-12-03 15:00:40.451000             🧑  作者: Mango

Express.js express.Router()函数

在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()函数提供了一种创建和挂载路由器的简便方法。