在Express中,Router
对象是一个可以使用与主应用相同的 API 的小型中间件栈,它可以处理并分发路由。使用 Router
可以帮助你将路由组织到不同的文件中,使得应用的结构更加清晰和模块化。这对于构建大型应用特别有用,因为它可以帮助你更好地组织和管理代码。
创建 Router
首先,你需要从 express
模块中引入 Router
。然后,你可以创建一个 Router
实例,并使用它与 app
实例相同的方法来定义路由。
const express = require('express');
const router = express.Router();
// 现在你可以在这个router上定义路由了
router.get('/', (req, res) => {
res.send('Home page');
});
router.get('/about', (req, res) => {
res.send('About page');
});
// ... 定义更多路由
使用 Router
定义好路由后,你需要将这个 router
实例挂载到你的主应用上。这通常在你的主文件(如 app.js
)中完成,你可以使用 app.use()
方法来实现。
const express = require('express');
const app = express();
// 引入之前定义的router
const myRouter = require('./routes/myRouter'); // 假设你的router定义在routes/myRouter.js文件中
// 将router挂载到应用的某个路径上
// 这里我们将它挂载到根路径'/'上,但你也可以挂载到'/somepath'上
app.use('/', myRouter);
// 现在,当请求'/'或'/about'时,都会由myRouter来处理
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
路由文件
通常,你会在项目的 routes
目录下为每个主要的路由集合创建一个单独的文件。每个文件都会导出一个 Router
实例,该实例包含了与该文件相关的所有路由定义。
// routes/users.js
const express = require('express');
const router = express.Router();
// 定义与用户相关的路由
router.get('/', (req, res) => {
res.send('Users page');
});
router.get('/:id', (req, res) => {
res.send(`User ID: ${req.params.id}`);
});
module.exports = router;
然后,在你的主文件中,你可以引入并挂载这个 router
:
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
这样,当请求 /users
或 /users/:id
时,就会由 usersRouter
来处理。