第四节:模型、路由、中间件、工具文件夹创建

9 阅读3分钟

项目结构优化与模块化设计

一、数据模型层(Models)架构设计

目录结构规划

models/                      # 数据模型根目录
├─ auth/                     # 权限相关模型
│   ├─ tenant.js            # 租户模型
│   └─ index.js             # 权限模型统一导出
├─ system/                   # 系统管理模型
│   ├─ user.js              # 用户模型
│   ├─ menu.js              # 菜单模型
│   └─ index.js             # 系统模型统一导出
├─ base.js                   # 基础模型抽象类
└─ index.js                  # 全局模型入口文件

代码实现

1. 全局模型入口 (models/index.js)

/**
 * 模型统一导出入口
 * 集中管理所有数据模型,便于统一引用
 */
const System = require('./system')
const Auth = require('./auth')

module.exports = {
  SystemModel: System,
  AuthModel: Auth
}

2. 系统管理模块 (models/system/index.js)

/**
 * 系统管理数据模型集
 * 包含用户管理、菜单管理等相关模型
 */
const Users = require('./user')
const Menus = require('./menu')

module.exports = {
  UsersModel: Users,    // 用户数据模型
  MenusModel: Menus,    // 菜单数据模型
}

3. 权限管理模块 (models/auth/index.js)

/**
 * 权限管理数据模型集
 * 包含租户管理等相关模型
 */
const Tenant = require('./tenant')

module.exports = {
  TenantModel: Tenant   // 租户数据模型
}

......其他模块后续编写

二、路由层(Routes)架构设计

目录结构规划

routes/                     # 路由根目录
├─ auth/                    # 权限相关路由
│   ├─ tenant.js           # 租户路由
│   └─ index.js            # 权限路由统一管理
├─ system/                  # 系统管理路由
│   ├─ user.js             # 用户路由
│   ├─ menu.js             # 菜单路由
│   └─ index.js            # 系统路由统一管理
└─ index.js                # 全局路由入口

代码实现

1. 全局路由入口 (routes/index.js)

/**
 * 全局路由配置入口
 * 负责路由的统一分发和命名空间管理
 */
const express = require('express')
const router = express.Router()

// 系统管理路由
router.use('/system', require('./system'))
// 权限管理路由
router.use('/auth', require('./auth'))

module.exports = router

2. 系统管理路由 (routes/system/index.js)

/**
 * 系统管理路由集
 * 集中管理系统相关API接口
 */
const express = require('express')
const router = express.Router()

// 用户管理路由
router.use('/user', require('./user'))
// 菜单管理路由
router.use('/menu', require('./menu'))

module.exports = router

3. 权限管理路由 (routes/auth/index.js)

/**
 * 权限管理路由集
 * 集中管理权限相关API接口
 */
const express = require('express')
const router = express.Router()

// 租户管理路由
router.use('/tenant', require('./tenant'))

module.exports = router

三、中间件层(Middlewares)设计

目录结构规划

middlewares/                # 中间件根目录
└─ index.js               # 中间件统一导出

四、工具函数层(Utils)设计

目录结构规划

utils/                     # 工具函数根目录
└─ index.js              # 工具函数统一导出

五、架构设计优势

1. 模块化清晰

  • 按功能划分:将系统划分为系统管理、权限管理等独立模块
  • 职责分离:模型、路由、控制器各司其职,降低耦合度
  • 易于维护:每个模块独立,便于单独测试和维护

2. 可扩展性强

  • 分层设计:支持水平扩展,可轻松添加新的业务模块
  • 统一入口:每个层级都有统一的导出入口,便于管理
  • 标准化接口:各模块遵循相同的设计模式,保证一致性

3. 开发效率高

  • 快速定位:明确的分层结构让开发者能快速定位代码位置
  • 代码复用:基础模型和工具函数可在多个模块中复用
  • 团队协作:清晰的模块边界便于团队分工协作

4. 维护成本低

  • 单一职责:每个文件只负责一个特定的功能
  • 易于测试:模块化设计便于编写单元测试和集成测试
  • 版本控制:可针对单个模块进行版本管理和发布