目录结构
展示当前项目的目录结构,各部分的作用。
项目目录结构完全遵守 project-layout 规范,结构清晰,便于扩展和维护。
什么是 project-layout
这是 Go 应用程序项目的基本布局。它不是核心 Go 开发团队定义的官方标准;然而,它是 Go 生态系统中一组常见的老项目和新项目的布局模式。其中一些模式比其他模式更受欢迎。它还具有许多小的增强,以及对任何足够大的实际应用程序通用的几个支持目录。
开发过程中,应该遵循一些规范,这样可以使项目结构更加清晰,便于扩展和维护。
约定优于配置,这样可以减少开发人员之间的沟通成本,提高开发效率。
目录树形展示
.
├── .github ---------------------------- GitHub 相关配置
│ └── workflows ------------------------ GitHub Actions 配置
│ ├── deploy.yml --------------------- 部署到github pages
│ └── go.yml ------------------------- Go
├── api -------------------------------- API 文档
│ └── swagger -------------------------- swagger 接口文档
│ ├── docs.go
│ ├── swagger.json
│ └── swagger.yaml
├── assets ----------------------------- 静态资源
│ ├── golang.png
│ └── x.png
├── build ------------------------------ 构建目录
├── cmd -------------------------------- 命令行工具
│ ├── root.go -------------------------- 命令行工具入口
│ ├── server.go ------------------------ 服务命令
│ └── version.go ----------------------- 版本命令
├── configs ---------------------------- 配置文件
│ ├── config.example.yaml -------------- 配置文件示例
│ ├── config.go ------------------------ 配置文件解析
│ ├── jwt.go --------------------------- JWT 配置
│ ├── mongo.go ------------------------- MongoDB 配置
│ ├── mysql.go ------------------------- MySQL 配置
│ ├── redis.go ------------------------- Redis 配置
│ └── server.go ------------------------ 项目服务配置
├── deployments ------------------------ 部署相关
│ ├── docker-compose.yml --------------- Docker Compose 配置
│ └── restart-server.sh ---------------- 重启服务脚本
├── docs ------------------------------- 文档
├── githooks --------------------------- Git 钩子
│ ├── commit-msg ----------------------- Git 提交信息钩子
│ └── pre-commit ----------------------- Git 提交前钩子
├── internal --------------------------- 内部代码
│ ├── controllers ---------------------- 控制器
│ │ ├── example.go --------------------- 示例控制器
│ │ ├── public.go ---------------------- 公共控制器
│ │ └── user.go ------------------------ 用户控制器
│ ├── middlewares -------------------- 中间件
│ │ ├── cors.go ---------------------- 跨域中间件
│ │ ├── errorHandle.go --------------- 错误处理中间件
│ │ ├── jwt.go ----------------------- JWT 中间件
│ │ ├── limit.go --------------------- 限流中间件
│ │ └── middleware.go ---------------- 中间件入口
│ ├── models ------------------------- 模型
│ │ ├── example.go ------------------- 示例模型
│ │ ├── model.go --------------------- 模型入口
│ │ └── user.go ---------------------- 用户模型
│ ├── pkg ---------------------------- 内部代码共享包
│ │ ├── logger ----------------------- 日志
│ │ │ ├── logger.go ------------------ 日志入口
│ │ │ ├── logrus.go ------------------ logrus 日志
│ │ │ └── zap.go ---------------------- zap 日志
│ │ ├── mongo ------------------------ MongoDB 包
│ │ │ └── mongo.go --------------------- MongoDB 包入口
│ │ ├── mysql ------------------------ MySQL 包
│ │ │ └── mysql.go --------------------- MySQL 包入口
│ │ ├── redis ------------------------ Redis 包
│ │ │ └── redis.go ------------------- Redis 包入口
│ │ ├── response --------------------- 响应包
│ │ │ └── response.go ---------------- 响应包入口
│ │ └── utils ------------------------ 工具包
│ │ └── jwt.go --------------------- jwt 工具包
│ ├── router ------------------------- 路由
│ │ ├── example.go ------------------- 示例路由
│ │ ├── public.go -------------------- 公共路由
│ │ ├── router.go -------------------- 路由入口
│ │ └── user.go ---------------------- 用户路由
│ └── services ----------------------- 服务
│ ├── example.go ------------------- 示例服务
│ ├── service.go ------------------- 服务入口
│ └── user.go ---------------------- 用户服务
├── scripts ---------------------------- 脚本
│ ├── build.sh ------------------------- 构建脚本
│ ├── clean.sh ------------------------- 清理脚本
│ └── lint.sh -------------------------- 代码检查脚本
├── test ------------------------------- 测试目录
├── .air.toml -------------------------- air 配置
├── .gitignore ------------------------- git 忽略文件
├── LICENSE ---------------------------- 开源协议
├── Makefile --------------------------- Makefile
├── README.md -------------------------- 项目说明
├── README_en.md ----------------------- 项目说明(英文版)
├── go.mod ----------------------------- go mod
├── go.sum ----------------------------- go mod
└── main.go ---------------------------- 项目入口