cheetah 包含多种项目,gin-web、shell-ansible,gitbook文档等脚手架
猎豹的故事
猎豹(Cheetah)是地球上速度最快的动物,凭借其敏捷的动作和极速的奔跑能力,它能够迅速追上猎物,完成捕猎任务。猎豹的快速和高效不仅是它在自然界中的生存优势,也成为了现代技术领域中许多工具和框架追求的目标——快速、高效和简洁。
正如猎豹凭借速度和敏捷征服大自然,Cheetah 脚手架工具的设计理念就是为了让开发者能够像猎豹一样,快速、敏捷地启动和构建 Go 项目,省去繁琐的配置和重复性工作,让你专注于业务逻辑的实现。
项目介绍
Cheetah 是一个 Go 语言的脚手架工具,旨在帮助开发者快速构建和启动常见的应用程序架构和代码模板。它通过封装和自动化一系列常见的技术栈和开发流程,使开发者能够高效地启动项目,减少手动配置和重复劳动。
框架介绍
.
├── 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内容
更多其他的,可以打开项目进行查看