Express 路由模块化是实际开发中非常重要的一部分,可以让你的项目结构更清晰、维护更方便。
🧱 一、为什么要模块化?
随着项目变大,如果所有路由都写在 app.js
中,会很乱。使用模块化后可以:
- 功能解耦:每个模块管理自己的路由。
- 可维护性强:按业务拆分文件结构。
- 利于多人协作:多人开发互不干扰。
📁 二、目录结构示例
project/
├── app.js
├── routes/
│ ├── index.js
│ └── user.js
🛠️ 三、步骤讲解
1️⃣ 创建路由模块:routes/user.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;
2️⃣ 创建主路由文件:routes/index.js
你也可以统一导出多个子路由模块(可选做法):
const express = require('express');
const router = express.Router();router.get('/', (req, res) => {res.send('首页');
});module.exports = router;
3️⃣ 在主程序中引入使用:app.js
const express = require('express');
const app = express();
const port = 3000;// 引入路由模块
const indexRouter = require('./routes/index');
const userRouter = require('./routes/user');// 挂载路由
app.use('/', indexRouter); // 访问 http://localhost:3000/
app.use('/user', userRouter); // 访问 http://localhost:3000/userapp.listen(port, () => {console.log(`Server running at http://localhost:${port}`);
});
✅ 四、访问示例
路径 | 响应内容 |
---|---|
GET / | 首页 |
GET /user | 用户首页 |
GET /user/1001 | 获取用户 ID:1001 |
📌 五、模块化小技巧
做法 | 好处 |
---|---|
一个模块一个路由文件 | 清晰解耦 |
使用 express.Router() | 支持中间件嵌套和子路由 |
提取公共中间件 | 提高复用性 |
使用 routes/index.js 总入口 | 统一挂载更整洁 |
🧩 六、进阶封装建议(可选)
你可以封装一个 registerRoutes(app)
函数专门注册所有路由,类似于中大型项目的做法:
// router/index.js
module.exports = (app) => {app.use('/', require('./index'));app.use('/user', require('./user'));
};
// app.js
require('./routes')(app);