gf-in-action

一、项目结构

包含多个系统的单应用目录结构会不太一样,主要由于不同的系统有不同的功能逻辑,也有相同的功能逻辑。我们需要将不同的功能逻辑充分地进行解耦,互不干扰;而相同的功能抽离出来,便于复用。还是高内聚,低耦合**。

├── app
│ ├── common
│ ├── dao
│ ├── model
│ └── module
│     └── user
│         └── api
│         ├── cli
│         ├── cron
│         ├── define
│         └── service
│         └── init.go
│ └── init.go
├── boot
├── config
├── docker
├── document
├── i18n
├── library
├── packed
├── public
├── template
├── upload
├── Dockerfile
├── go.mod
└── main.go
目录/文件名 说明 描述
app 业务逻辑层 所有的业务逻辑存放目录。
─ common 通用逻辑 多系统间可复用的、通用的功能逻辑。
─ dao 数据访问 数据库的访问操作,仅包含最基础的数据库CURD方法。
─ model 结构模型 数据相关的实体结构定义,以及一些系统间通用的数据结构定义。
─ module 系统模块 内部可能包含多个子系统,不同子系统之间资源相互隔离。
── user 用户系统模块 子系统模块。
─── api 业务接口 当前系统内部接收/解析用户输入参数的入口/接口层。
─── cli 命令行接口 当前系统命令行方式执行的入口/接口层。
─── cron 定时任务 当前系统内部定时任务执行入口层。
─── define 结构定义 当前系统内部的输入、输出、错误码等数据结构定义。
─── service 逻辑封装 当前系统内部业务逻辑封装,实现特定的业务需求。
─── init.go 模块初始化 用于模块业务参数或者路由的初始化,在app/init.go中被import的包。
─ init.go 项目初始化 用于项目公用业务参数或者路由的初始化,main.go中最后一个被import的包。
boot 初始化包 用于系统初始化参数设置,往往作为main.go中第一个被import的包。
config 配置管理 所有的配置文件存放目录。
docker 镜像文件 Docker镜像相关依赖文件,脚本文件等等。
document 项目文档 Documentation项目文档,如: 设计文档、帮助文档等等。
i18n I18N国际化 I18N国际化配置文件目录。
library 公共库包 公共的功能封装包,往往不包含业务需求实现。
packed 打包目录 资源文件打包的Go文件存放在这里,boot包初始化时自动调用。
public 静态目录 仅有该目录下的文件才能对外提供静态服务访问。
template 模板文件 模板文件存放的目录。仅当需要使用模板引擎的场景下有用。
Dockerfile 镜像描述 云原生时代用于编译生成Docker镜像的描述文件。
go.mod 依赖管理 使用Go Module包管理的依赖描述文件。
main.go 入口文件 程序入口文件。