首先你需要安装 Go (version 1.11+), 然后执行go get 安装yago
go get github.com/hulklab/yago/yago
go >= 1.11(由于使用了 go mod 管理版本依赖)
export GO111MODULE=on
yago init -a myapp
cd myapp/
go mod init
go build
sh env.init.sh yourname
./myapp
- 修改配置文件中的 app.task_enable,默认为开启
- 修改环境变量 export {{配置文件中的app_name}}_APP_TASK_ENABLE=1, 1 表示开启,0 表示关闭,配置文件与环境变量同时存在时环境变量生效
├── app
│ ├── g
│ │ └── errors.go //系统级错误定义处
│ ├── modules //模块目录
│ │ └── home // 样例模块
│ │ ├── homecmd // 命令行 控制器
│ │ │ └── home.go
│ │ ├── homedao // 数据库访问层
│ │ │ └── home.go
│ │ ├── homehttp // http 控制器
│ │ │ └── home.go
│ │ ├── homemodel // 业务逻辑层
│ │ │ └── home.go
│ │ ├── homerpc // grpc 控制器
│ │ │ ├── home.go
│ │ │ ├── home_test.go
│ │ │ │ └── homepb
│ │ │ │ ├── home.pb.go
│ │ │ │ └── home.proto // proto文件
│ │ │ └── README.md
│ │ └── hometask // 常驻进程和定时任务控制器
│ │ └── home.go
│ ├── route // 路由管理目录
│ │ ├── route.go // 路由控制文件
│ └── third // 第三方api调用目录
│ └── homeapi
│ ├── home.go // http rpc 客户端接口封装
│ └── protobuf
│ └── homepb
│ ├── home.pb.go
│ └── home.proto
├── conf // 配置文件目录
│ └── app.toml
├── main.go // 程序总入口
└── tools // 构建工具
└── build.sh
yago 提供了四种控制器入口,分别是 命令行(cmd),http,grpc, 常驻进程和定时任务(task)。各个控制器的路由注册就在各个控制器层的 init函数中完成。
请分别参考样例
@reference example/app/modules/home/homehttp/home.go
@reference example/app/modules/home/homecmd/home.go
@reference example/app/modules/home/hometask/home.go
@reference example/app/modules/home/homerpc/home.go
配置文件解析完成后存储在全局yago.Config中,yago.Config是 https://github.com/spf13/viper 的扩展。原生采用viper的方法来获取配置文件的值即可。
yago集成的组件包括 redis,mysql orm,logger,kafka,组建统一实现了Ins 单例方法,需要使用组件可以参考各组件的test文件。
在项目根目录下,使用yago创建模块。新创建的模块会自动将路由加载到myapp/routes中,模块内容的编写可以参考样例 home模块
cd myapp
yago new -m newmodule
- 系统级错误定义处
./app/g/error.go
- 使用
@reference example/app/modules/homehttp/home.go::AddAction
第三方API调用目前支持 http和grpc
- 目录规范
@see example/app/third
- 使用样例
@reference example/app/third/homeapi/home.go
- Preferences -> Go -> Go modules(vgo)
- 如果还有标红的提示,点击 Sync packages
- 内存 cache
- LRU cache
- Converts a mysql table into a golang struct
- Struct copy to struct, map convert into struct
- MessagePack encoding for Golang
-
unknown import path "github.com/ugorji/go/codec": ambiguous import: found github.com/ugorji/go/codec in multiple modules 模块冲突问题
原因参考:
解决方案: 在go.mod文件最下面添加如下代码
replace github.com/ugorji/go v1.1.4 => github.com/ugorji/go/codec v0.0.0-20190204201341-e444a5086c43