Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

《开源自荐》Cheetah 是一款 golang 项目脚手架工具集合,旨在帮助开发者快速构建常见的项目架构和应用模板。 #2869

Open
AgoCan opened this issue Dec 17, 2024 · 0 comments

Comments

@AgoCan
Copy link

AgoCan commented Dec 17, 2024

推荐项目

  • 类别:Go

  • 项目标题:Cheetah 是一款 golang 项目脚手架工具集合,旨在帮助开发者快速构建常见的项目架构和应用模板。

  • 项目描述:Cheetah 是一个 Go 语言的脚手架工具,旨在帮助开发者快速构建和启动常见的应用程序架构和代码模板。它通过封装和自动化一系列常见的技术栈和开发流程,使开发者能够高效地启动项目,减少手动配置和重复劳动。

  • 亮点:

  1. 使用简单
  2. 符合uber-go的规范
  3. 符合golang的约定俗成的目录结构
  4. 支持的类别多
  • 示例代码:
# 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内容
  • 后续更新计划:
  1. 增加参数,例如: --no-config 不使用配置文件
  2. 发布0.0.6版本,增加grpc的内容
  3. 增加单元测试用例
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant