Skip to content

1.3 项目目录结构 ​

概述

本页给出项目顶层与关键子目录的结构说明。目录划分遵循"一个模块固定四个文件"的契约,基础设施统一收敛在 utility/。

顶层结构 ​

text
EasyGoAdmin_Gin_EleVue/
├── cmd/                    # 可执行入口(api 服务、gen 生成器、migrator 迁移器)
├── config/                 # 配置文件(config.yaml 为基)
├── deploy/                 # 部署物料(Dockerfile、docker-compose.yaml、nginx.conf)
├── document/               # 项目文档与数据库脚本(module-conventions.md、各方言 SQL)
├── internal/               # 核心业务代码(对外不可见的内部包)
├── resource/               # 运行期资源(ip2region 等数据文件)
├── templates/              # 代码生成器模板(后端四件套 + 前端 ui/ui2)
├── ui/                     # 前端工程(Vue3 + ElementPlus)
├── utility/                # 基础设施包(config、logger、cache、jwt、upload...)
├── Makefile / make.bat     # 构建与开发命令(两套目标一致)
├── go.mod / go.sum         # Go 模块定义(module easygoadmin)
└── log/ upload/            # 运行期产生的日志与上传文件目录

internal/ — 核心业务 ​

text
internal/
├── consts/                 # 业务常量(错误码哨兵、缓存键、上下文键、日志类型)
├── handler/                # 接口层:极薄委托,方法签名与 dto 一一对应
├── middleware/             # 中间件(trace/cors/response/jwt/tenant/authz/operation_log...)
├── migrate/                # 跨库迁移引擎(内省、DDL 生成、分批搬运、序列修复)
├── model/
│   ├── db/                 # 数据库连接与多方言驱动装配
│   ├── dto/                # 契约层:请求/响应结构与校验标签
│   ├── hooks/              # 全局 GORM 钩子(审计字段补齐、软删除拦截)
│   └── dbtest/             # 数据库相关测试辅助
├── repository/             # 数据访问层:XxxRepo + Base,统一 Ctx(ctx) 入口
├── router/                 # 路由注册(router.go 声明表、bind.go 反射引擎、meta 元数据)
├── server/                 # 服务装配与启动、优雅关闭
├── service/                # 业务层:sXxx + ModuleSpec 声明 + 手写复杂逻辑
└── task/                   # 定时任务(init 自注册 + 调度器)

utility/ — 基础设施 ​

包职责
apperr业务错误类型(New/Newf,携带错误码上抛)
cache缓存抽象(Redis 探测失败自动降级内存)
captcha图形验证码生成与校验
config配置加载(config.yaml + APP_* 环境变量覆盖)
crypto加解密与哈希工具
excelExcel 导入导出封装(excelize)
ip2regionIP 归属地查询
jwtToken 签发与解析
loggerzap 结构化日志(支持 ctx 追踪字段)
response统一响应信封构造
uaUser-Agent 解析
upload文件上传与转正(temp → 模块目录)
validatorbinding 标签校验与错误消息映射

ui/ — 前端工程 ​

text
ui/src/
├── api/                    # 接口模块(按业务域分组,与后端路由一一对应)
├── components/             # 公共组件(Table、Page、Form、Upload、Editor、Excel...)
├── directives/             # 自定义指令(permission 等)
├── enums/                  # 前端枚举常量
├── hooks/                  # 组合式函数
├── layout/                 # 布局系统(侧边栏、顶栏、标签页)
├── router/                 # 路由(静态路由 + 动态菜单路由生成器 + 守卫)
├── store/                  # Pinia 状态(user、asyncRoute、tabsView...)
├── styles/                 # 全局样式与主题变量
├── utils/                  # 工具函数(http 封装、auth、校验、格式化)
└── views/                  # 页面(按业务域分目录)

约定回顾 ​

约定说明
表名gin_ 前缀 + 小写下划线
模块文件dto / repository / service / handler 四件套同名
服务单例type sXxx struct{} + init() 注册 + var Xxx *sXxx
仓储入口统一 repository.NewXxxRepo().Ctx(ctx),禁止裸用 *gorm.DB
代码生成产物菜单行幂等创建,router.go 自动追加 Bind 声明块

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