主题
路由模块化
当应用规模增大,所有路由写在一个文件中将导致代码混乱。Express 提供了模块化路由的方式,将路由拆分为独立模块,有助于项目结构清晰、职责明确。
使用 express.Router 创建路由模块
express.Router()
是创建模块化、可挂载路由处理程序的类。
示例:用户路由模块
创建 routes/user.js
文件:
js
const express = require('express');
const router = express.Router();
// 获取用户列表
router.get('/', (req, res) => {
res.send('用户列表');
});
// 获取指定用户
router.get('/:id', (req, res) => {
res.send(`用户ID:${req.params.id}`);
});
module.exports = router;
在主应用中挂载路由模块
在 app.js
或主文件中引入并使用路由模块:
js
const express = require('express');
const app = express();
// 引入路由模块
const userRouter = require('./routes/user');
// 挂载到 /user 路径
app.use('/user', userRouter);
app.listen(3000, () => {
console.log('服务器已启动,端口 3000');
});
访问路径示例:
/user/
→ 用户列表/user/123
→ 获取 ID 为 123 的用户
支持多级模块化结构
可以根据功能划分多个路由文件:
text
routes/
├── user.js
├── product.js
└── order.js
分别挂载到对应路径:
js
app.use('/user', require('./routes/user'));
app.use('/product', require('./routes/product'));
app.use('/order', require('./routes/order'));
路由模块中间件支持
模块路由也可以使用中间件:
js
router.use((req, res, next) => {
console.log('用户路由时间:', Date.now());
next();
});
总结
路由模块化是构建大型 Express 应用的重要技巧,能够提升代码结构的清晰度,降低耦合度,让项目更易维护和扩展。