project 项目目录
├── .gitignore
├── README.md
├── go.mod
├── go.sum
├── Makefile
├── app 应用目录
│ └── myapp 应用
│ ├── command
│ ├── controller
│ ├── middleware
│ ├── service 应用服务目录,此目录文件由代码工具自动生成后再做修改
│ └── validator
├── autoload 自动加载目录,此目录文件由代码工具自动生成
├── base 应用目录,此目录文件由代码工具自动生成
│ └── app 应用sdk
├── config 配置目录
│ ├── typs 配置定义目录
│ │ ├── CommandConf.go 指令配置
│ │ ├── ConfigCenterConf.go 配置中心配置
│ │ ├── DatabaseConf.go 数据库配置
│ │ ├── RedisConf.go redis配置
│ │ ├── RouteConf.go 路由配置
│ │ ├── RpcConf.go RPC调用客户端配置
│ │ └── ServerConf.go 服务配置
│ └── vars 配置实例化目录
│ ├── CommandConf.go 指令配置
│ ├── ConfigCenterConf.go 配置中心配置
│ ├── DatabaseConf.go 数据库配置
│ ├── RedisConf.go redis配置
│ ├── RouteConf.go 路由配置
│ ├── RpcConf.go RPC调用客户端配置
│ └── ServerConf.go 服务配置
├── core 框架核心目录
├── docker 部署流程控制文件目录
├── resource 资源文件目录
├── response 接口返回定义目录
└── server
└── main.go 程序入口
- 安装 golang,配置 GOPATH,参考 golang 官方文档
- 设置环境变量,PATH=PATH:$GOAPTH/bin
- 安装框架代码生成工具
go install github.com/csingo/ctool@v1.0.0
- 使用代码生成工具创建项目
- 创建的 go 文件都是用首字母大写的驼峰式命名
- 每个业务中的多个 project 共同维护一个 proto 仓库,用于自动生成 服务、枚举值、常用结构体、sdk
- 内部服务调用尽量使用 sdk 的方式,特殊情况特殊分析
- 创建 project 的流程
ctool project::create --name=myproject # 对应一个 Git 仓库
ctool app::create --name=myapp # 对应仓库中 app 目录内的文件夹
ctool app::service --app=myapp --protoPath=fullpath # 对应 app 中的 service 文件夹中的每个文件,注意: 需要填写全路径
......
注意:代码工具仅作用于当前命令行所在文件路径
- 初始化工具
ctool tool::init
- 创建项目
ctool project::create --name=myproject
- 创建应用
ctool app::create --name=myapp
- 创建服务
ctool app::service --app=myapp --protoPath=fullpath
- 创建 controller / command / middleware
ctool app::controller --app=myapp --name=mycontroller
ctool app::command --app=myapp --name=mycontroller
ctool app::middleware --app=myapp --name=mycontroller
- 创建 config
ctool config::create --name=MyConf
- 创建 sdk
ctool sdk::create --app=myapp --protoPath=fullpath