项目结构优化与模块化设计
一、数据模型层(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. 维护成本低
- 单一职责:每个文件只负责一个特定的功能
- 易于测试:模块化设计便于编写单元测试和集成测试
- 版本控制:可针对单个模块进行版本管理和发布