expres路由模块化

141 阅读1分钟

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/user

app.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);