《开源自荐》Cheetah 是一款 golang 项目脚手架工具集合,旨在帮助开发者快速构建常见的项目架构和应用模板。
Opened this issue · 0 comments
AgoCan commented
推荐项目
-
类别:Go
-
项目标题:Cheetah 是一款 golang 项目脚手架工具集合,旨在帮助开发者快速构建常见的项目架构和应用模板。
-
项目描述:Cheetah 是一个 Go 语言的脚手架工具,旨在帮助开发者快速构建和启动常见的应用程序架构和代码模板。它通过封装和自动化一系列常见的技术栈和开发流程,使开发者能够高效地启动项目,减少手动配置和重复劳动。
-
亮点:
- 使用简单
- 符合uber-go的规范
- 符合golang的约定俗成的目录结构
- 支持的类别多
- 示例代码:
# linux ubuntu x86 install
apt-get update
apt-get install curl -y
version=0.0.5
release_package=https://github.com/go-cheetah/cheetah/releases/download/${version}/cheetah-linux-amd64
curl -o cheetah ${release_package}
./cheetah -h
./cheetah -i mvc
生成后代码结构
.
├── api # 接口文档,主要是swagger
├── bin # 生成的二进制文件
├── build # 构建相关的脚本或者内容
│ └── Dockerfile
├── cmd # 程序的入口
│ └── app # app1 取名例如前台就叫 front,后台叫 backend,一个目录一个入口
│ ├── app # app 固定词
│ │ ├── options # 处理选项
│ │ │ └── options.go
│ │ └── server.go # 基本上可以认为是入口函数
│ └── main.go # 入口函数,具体的实现都在上面的server之中
├── config # 默认配置文件
│ └── config.yaml
├── docs # 文档
├── go.mod # go.mod
├── internal # 内部资源,外部不允许调用 请查看 https://golang.org/doc/go1.4#internalpackages
│ ├── config # 配置文件,主要就是设置一下配置的相关结构体之类
│ │ ├── config.go
│ │ ├── db.go # 数据库的配置项
│ │ └── log.go # 日志的配置项
│ ├── handler # handler函数,这里是把数据模块,handler 放置一起
│ │ └── health # 案例
│ │ ├── handler.go
│ │ └── service.go
│ ├── model # model层,增加处理数据库的内容
│ │ ├── health # 案例
│ │ │ ├── health.go # 具体的操作内容,一个表结构对应一个文件
│ │ │ ├── model.go # 初始化的操作
│ │ │ └── types.go # 定义常量等内容
│ │ └── model.go # 这里可以定义接口,这里暂时是一个空文件
│ ├── pkg # 内部调用模块,其实不推荐加一个pkg,因为这样导入模块的时候 需要中间多加一个pkg字样,看个人习惯
│ │ ├── database # 数据库相关,例如MySQL
│ │ │ ├── database.go # 定义接口
│ │ │ ├── mysql.go # 初始化MySQL
│ │ │ └── sqlite.go # 初始化sqlite
│ │ ├── generator # id生成器
│ │ │ └── id.go
│ │ ├── middleware # 中间件,上面其实也算,这里应该算是gin的使用工具
│ │ │ ├── cors # 跨域
│ │ │ │ ├── config.go
│ │ │ │ ├── cors.go
│ │ │ │ └── utils.go
│ │ │ └── log # 日志
│ │ │ └── log.go
│ │ └── response # 返回内容
│ │ ├── common.go
│ │ └── response.go
│ └── server # 这里也可以改成api, 主要就是上面的入口函数调用的地方,其他的函数主要作用是插件,这里是主要处理逻辑部分
│ ├── migrate.go # 处理model层的migrate
│ ├── router.go # 路由在这里,通过传参的方式把配置文件等服务传到handler进行使用
│ └── server.go # web框架入口
├── pkg # 跟上面的pkg一样的说法,不推荐,但是很多代码库有这个习惯,看个人使用,这里是可以其他代码库进行调用
│ └── pkg.go # 查看 https://github.com/golang-standards/project-layout/issues/10 只看讨论即可
└── README.md # readme内容
- 后续更新计划:
- 增加参数,例如: --no-config 不使用配置文件
- 发布0.0.6版本,增加grpc的内容
- 增加单元测试用例