modulepackage
0.0.0-20240919033358-cce434e5d354
Repository: https://github.com/codfrm/cago.git
Documentation: pkg.go.dev
# README
Cago
Cago 一个快速开发的集成式框架.使用模块化的开发模式,每一个组件都可以单独的调用.
Cago 只对社区工具进行集成,大大减少迁移难度和学习成本,我们不生产代码,我们只是方案的搬运工.
使用 go 的struct
来声明 API 和 swagger 文档,可以通过脚手架来帮助你生成相关内容.
快速开始
你可以通过简单示例来快速的了解 Cago 的使用。你也可以复制这个示例来创建你的项目。
脚手架
你可以安装脚手架来帮助你生成代码。
CI/CD
cago 提供了gitlab-ci
、golanglint-ci
和
Kubernetes helm
的 CI/CD 配置文件,可以快速帮你实现 CI/CD.
当本地调试时也可以使用docker-compose.yaml
启动调试环境.
可以使用etcd
作为配置中心,也支持文件作为配置启动。
组件
大多数组件都是基于社区工具进行封装,方便使用。
目录结构
Cago使用三层架构,并混合了DDD的思想,推荐使用下面的目录结构。你也可以根据自己的需求来调整目录结构。
cmd/app/main.go
项目的入口configs
config.yaml
配置文件...
其他配置文件,也可以写配置读取方法,其它包调用:configs.GetConfig().XXX
docs
文档目录,包括 swagger api 文档、设计文档等deploy
部署资源文件internal
内部包api
API 请求结构体example/example.go
api请求与返回结构router.go
路由定义
controller
控制器目录,API请求会调用控制器,做一些数据处理校验逻辑model
数据模型entity
数据库实体模型,推荐使用充血模型xxx.go
一些数据模型的定义
pkg
项目内通用的模块code
错误码定义utils
工具包
repository
数据库操作service
服务接口task
任务模块crontab
定时任务queue
消息队列handler
消息队列处理器message
消息定义xxx.go
消息队列定义
task.go
任务定义
migrations
数据库迁移文件pkg
公共的模块,可以被其它项目引用.golangci.yml
golangci-lint 配置文件Makefile
项目的 Makefile 文件
参考项目
- GoFrame
- GoMicro
Who use Cago?
License
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
New create a new cago instance ctx 可以管理整个应用的生命周期,当ctx.Done()时,会传递到每一个组件,安全退出 cfg 配置文件,每一个组件都可以使用,通过 configs.NewConfig 去构建 应用启动时,会调用每一个组件的 Component.Start 方法,启动组件 应用停止时,会调用每一个组件的 Component.CloseHandle 方法,关闭组件 推荐链式调用的方式去使用 cago.New(ctx, cfg).Registry(component.Core()).RegistryCancel(mux.HTTP(api.Router)).Start().
Version return the version of cago.
# Type aliases
No description provided by the author
FuncComponent 函数式组件 适用于简单的组件 当你的组件不需要释放资源时,你可以只写一个函数,然后通过 FuncComponent 转换成组件 例如:
cago.FuncComponent(func(ctx context.Context, cfg *configs.Config) error { return nil }).
FuncComponentCancel 函数式带cancel方法的组件 适用于简单的组件,与 FuncComponent 的区别是多了一个cancel方法.