Skip to content

目录说明

在软件开发过程中,优秀的软件目录结构对于项目的组织、开发、维护和扩展至关重要,合理的目录结构能够显著提升开发效率和代码可维护性。

1. 清晰的层次结构:按照功能模块划分目录,方便团队成员快速定位代码。
2. 模块化管理:通过多模块结构,实现功能模块的独立管理,提高系统的可维护性和扩展性。
3. 分层架构:Handler 层、Service 层、Repository 层、Model 层分离,职责清晰。
4. 提升开发效率:清晰的目录结构和模块划分,减少查找代码的时间,提高开发效率。

项目根目录

├── src/                          // 后端源码
├── ui/                           // 前端源码
├── document/                     // 项目文档
├── migrations/                   // 数据库迁移脚本
├── scripts/                      // 脚本工具
├── tests/                        // 测试代码
├── wiki/                         // 文档站点
├── static/                       // 静态资源
├── uploads/                      // 上传文件目录
├── logs/                         // 运行日志目录
├── app.py                        // 启动入口
├── .env.example                  // 环境变量模板
├── .env                          // 环境变量
├── docker-compose.yml            // Docker 编排配置
├── Dockerfile                    // 镜像构建文件
├── Makefile                      // 快捷命令
├── pyproject.toml                // Poetry 依赖配置
├── poetry.lock                   // Poetry 依赖锁定
├── alembic.ini                   // Alembic 配置
├── requirements.txt              // Python 依赖清单
└── README.md                     // 项目说明

后端目录 (src/)

src/
├── app.py                        // 应用工厂
├── bootstrap.py                  // 启动引导

├── config/                       // 配置模块
│   ├── __init__.py
│   ├── app.py                    //   应用基础配置
│   ├── auth.py                   //   JWT 与登录安全配置
│   ├── captcha.py                //   验证码配置
│   ├── database.py               //   数据库配置
│   ├── email.py                  //   邮件配置
│   ├── logging.py                //   日志配置
│   └── redis.py                  //   Redis 配置

├── core/                         // 核心基础设施
│   ├── __init__.py
│   ├── base_handler.py           //   请求处理器基类
│   ├── base_model.py             //   ORM 模型基类
│   ├── base_repository.py        //   通用 Repository 基类
│   ├── base_service.py           //   通用 Service 基类
│   ├── base_schema.py            //   通用 Schema 基类
│   ├── context.py                //   上下文变量
│   ├── database.py               //   数据库引擎与会话管理
│   ├── exceptions.py             //   异常体系
│   ├── jwt.py                    //   JWT 令牌处理
│   ├── logger.py                 //   日志配置
│   ├── metrics.py                //   性能指标
│   ├── password.py               //   密码加密工具
│   ├── redis.py                  //   Redis 客户端
│   ├── response.py               //   统一响应封装
│   └── tracer.py                 //   链路追踪

├── common/                       // 公共模块
│   ├── __init__.py
│   ├── permission.py             //   权限解析
│   ├── middleware/                //   中间件
│   │   ├── __init__.py
│   │   ├── access_decorators.py  //     访问控制装饰器
│   │   ├── authentication.py     //     认证中间件
│   │   ├── cors.py               //     跨域处理
│   │   ├── login_log.py          //     登录日志装饰器
│   │   ├── metrics.py            //     请求指标中间件
│   │   ├── operation_log.py      //     操作日志装饰器
│   │   └── trace_id.py           //     链路追踪中间件
│   └── utils/                    //   工具函数
│       ├── __init__.py
│       ├── captcha.py            //     验证码工具
│       ├── crypto.py             //     密码加密工具
│       ├── dict_util.py          //     数据字典工具
│       ├── file.py               //     文件工具
│       ├── helpers.py            //     通用工具函数
│       ├── ip2region.py          //     IP 地理位置解析
│       ├── rich_text.py          //     富文本处理
│       └── validators.py         //     校验工具

├── modules/                      // 业务模块
│   ├── __init__.py
│   ├── auth/                     //   认证模块
│   ├── user/                     //   用户管理
│   ├── role/                     //   角色管理
│   ├── menu/                     //   菜单管理
│   ├── dept/                     //   部门管理
│   ├── position/                 //   岗位管理
│   ├── level/                    //   职级管理
│   ├── dict/                     //   字典管理
│   ├── dict_item/                //   字典项管理
│   ├── config/                   //   系统配置
│   ├── config_item/              //   配置项管理
│   ├── notice/                   //   通知公告
│   ├── link/                     //   友情链接
│   ├── category/                 //   分类管理
│   ├── article/                  //   文章管理
│   ├── param/                    //   参数管理
│   ├── city/                     //   城市级联
│   ├── file_template/            //   文件模板
│   ├── job/                      //   定时任务
│   ├── job_log/                  //   任务日志
│   ├── upload/                   //   文件上传
│   ├── login_log/                //   登录日志
│   ├── operation_log/            //   操作日志
│   ├── user_role/                //   用户角色关联
│   ├── role_menu/                //   角色菜单关联
│   ├── example/                  //   示例模块
│   └── generator/                //   代码生成器

├── api/                          // API 路由定义
│   ├── __init__.py
│   └── v1/                       //   v1 版本路由
│       ├── __init__.py
│       ├── router.py             //     路由聚合
│       ├── auth.py               //     认证路由
│       ├── index.py              //     首页路由
│       ├── upload.py             //     上传路由
│       ├── user.py               //     用户路由
│       ├── user_role.py          //     用户角色路由
│       ├── role.py               //     角色路由
│       ├── role_menu.py          //     角色菜单路由
│       ├── menu.py               //     菜单路由
│       ├── dept.py               //     部门路由
│       ├── dict.py               //     字典路由
│       ├── dict_item.py          //     字典项路由
│       ├── config.py             //     配置路由
│       ├── config_item.py        //     配置项路由
│       ├── level.py              //     职级路由
│       ├── position.py           //     岗位路由
│       ├── city.py               //     城市路由
│       ├── notice.py             //     公告路由
│       ├── link.py               //     友链路由
│       ├── category.py           //     分类路由
│       ├── article.py            //     文章路由
│       ├── param.py              //     参数路由
│       ├── file_template.py      //     文件模板路由
│       ├── job.py                //     定时任务路由
│       ├── job_log.py            //     任务日志路由
│       ├── generator.py          //     代码生成器路由
│       ├── operation_log.py      //     操作日志路由
│       ├── login_log.py          //     登录日志路由
│       └── example.py            //     示例路由

├── extensions/                   // 扩展注册
│   ├── __init__.py               //   扩展初始化
│   ├── sqlalchemy.py             //   数据库扩展
│   ├── redis.py                  //   Redis 扩展
│   ├── swagger.py                //   Swagger 占位
│   └── sentry.py                 //   Sentry 占位

└── constants/                    // 常量定义
    └── __init__.py               //   常量定义

前端目录 (ui/src/)

ui/src/
├── main.ts                       // 入口文件
├── App.vue                       // 根组件
├── api/                          // API 接口定义
│   ├── system/                   //   系统管理接口
│   ├── content/                  //   内容管理接口
│   ├── data/                     //   数据管理接口
│   ├── monitor/                  //   监控管理接口
│   ├── tool/                     //   工具接口
│   ├── file/                     //   文件接口
│   ├── region/                   //   地区接口
│   ├── setting/                  //   设置接口
│   ├── dashboard/                //   仪表盘接口
│   └── common/                   //   公共接口
├── views/                        // 页面视图
│   ├── login/                    //   登录页
│   ├── dashboard/                //   控制台
│   ├── system/                   //   系统管理页面
│   ├── content/                  //   内容管理页面
│   ├── data/                     //   数据管理页面
│   ├── monitor/                  //   监控管理页面
│   ├── file/                     //   文件管理页面
│   ├── tool/                     //   工具页面
│   ├── setting/                  //   设置页面
│   ├── exception/                //   异常页面
│   └── about/                    //   关于页面
├── components/                   // 公共组件
│   ├── Table/                    //   表格组件
│   ├── Form/                     //   表单组件
│   ├── Modal/                    //   弹窗组件
│   ├── Page/                     //   页面容器
│   ├── Upload/                   //   上传组件
│   ├── Editor/                   //   富文本编辑器
│   ├── Cropper/                  //   图片裁剪组件
│   ├── Qrcode/                   //   二维码组件
│   ├── Excel/                    //   Excel 导入导出组件
│   ├── ChinaArea/                //   省市区联动组件
│   ├── TableSelect/              //   表格选择器组件
│   ├── Select/                   //   下拉选择组件
│   ├── CountTo/                  //   数字动画组件
│   ├── Authority/                //   权限组件
│   ├── Lockscreen/               //   锁屏组件
│   ├── Password/                 //   密码强度组件
│   ├── Region/                   //   区域选择组件
│   ├── numberInput/              //   数字输入组件
│   ├── priceInput/               //   价格输入组件
│   ├── pagination/               //   分页组件
│   ├── Render/                   //   渲染组件
│   ├── icon/                     //   图标组件
│   └── importFile/               //   文件导入组件
├── hooks/                        // 组合式函数
│   ├── core/                     //   核心 hooks
│   ├── event/                    //   事件 hooks
│   ├── setting/                  //   配置 hooks
│   ├── web/                      //   Web hooks
│   ├── use-async.ts              //   异步请求状态管理
│   ├── useBattery.ts             //   电量监听
│   ├── useDomWidth.ts            //   DOM 宽度监听
│   ├── useOnline.ts              //   网络状态监听
│   └── useTime.ts                //   时间工具
├── store/                        // 状态管理
│   ├── index.ts                  //   Store 入口
│   ├── modules/                  //   Store 模块
│   ├── plugins/                  //   Store 插件
│   └── types.ts                  //   类型定义
├── router/                       // 路由配置
│   ├── index.ts                  //   路由实例
│   ├── base.ts                   //   静态路由
│   ├── constant.ts               //   常量路由
│   ├── generator-routers.ts      //   动态路由生成
│   ├── router-guards.ts          //   路由守卫
│   ├── router-icons.ts           //   路由图标映射
│   ├── menus/                    //   菜单配置
│   └── types.ts                  //   类型定义
├── utils/                        // 工具函数
│   ├── http/                     //   HTTP 请求封装
│   ├── auth.ts                   //   Token 管理
│   ├── dateUtil.ts               //   日期格式化
│   ├── downloadFile.ts           //   文件下载
│   ├── validate.ts               //   表单校验
│   ├── env.ts                    //   环境变量
│   ├── color.ts                  //   颜色工具
│   ├── wartermark.ts             //   水印
│   ├── useLockFn.ts              //   防重复提交
│   └── Storage.ts                //   本地存储
├── directives/                   // 自定义指令
├── plugins/                      // 插件注册
├── styles/                       // 全局样式
├── enums/                        // 枚举定义
└── assets/                       // 静态资源
    ├── icons/                    //   图标
    └── images/                   //   图片

注意事项

  • 保持一致性:目录结构一旦确定,应保持一致性,避免随意更改。
  • 合理划分模块:根据项目的实际需求,合理划分功能模块,避免过度模块化。
  • 文档记录:在项目文档中详细说明目录结构和各模块的功能,便于新成员快速上手。
  • 版本控制:使用 Git 等版本控制工具,并在 .gitignore 文件中配置不需要跟踪的目录和文件。

总结

软件架构的目录结构是项目开发和维护的基础,直接影响到项目的可维护性、可扩展性和开发效率。采用分层的目录结构(后端 handler → service → repository → model,前端 api → views → components),结合模块化管理,是一个有效的解决方案。通过合理规划和遵循最佳实践,可以确保项目的结构清晰、功能明确,为团队开发和长期维护打下坚实的基础。

小蚂蚁云团队 · 提供技术支持