如果 go get 不动,请自行加梯子
export GOPROXY=https://goproxy.io
# 注意该梯子不支持私有repo,私有repo请去掉GOPROXY
export GOPROXY=
依赖
go >= 1.11(由于使用了 go mod 管理版本依赖)
如果想在GOPATH下用mod, 请设置 GO111MODULE=on 则在 GOPATH/src 目录下使用 go get 时也默认采用 go mod
export GO111MODULE=on
开始
// 1. 获取 yago
go get github.com/hulklab/yago/yago
// 2. 用 yago 在当前目录创建你的项目 myapp
yago init -a myapp
// 3. 进入目录初始化
cd myapp/
go mod init
// 4. build
go build
// 5. 启动
./myapp -c conf/app.toml
// #如果需要在此机器上开启task任务, 需要设置环境变量
export {{配置文件中的app_name}}_IS_TASK_HOST=1
目录结构
├── app
│ ├── g
│ │ └── errors.go
│ ├── modules
│ │ └── home
│ │ ├── homecmd
│ │ │ └── home.go
│ │ ├── homedao
│ │ │ └── home.go
│ │ ├── homehttp
│ │ │ └── home.go
│ │ ├── homemodel
│ │ │ └── home.go
│ │ ├── homerpc
│ │ │ ├── home.go
│ │ │ ├── home_test.go
│ │ │ ├── protobuf
│ │ │ │ └── homepb
│ │ │ │ ├── home.pb.go
│ │ │ │ └── home.proto
│ │ │ └── README.md
│ │ └── hometask
│ │ └── home.go
│ ├── routes
│ │ ├── cmdroute
│ │ │ └── cmd.go
│ │ ├── httproute
│ │ │ └── http.go
│ │ ├── rpcroute
│ │ │ └── rpc.go
│ │ └── taskroute
│ │ └── task.go
│ └── third
│ └── homeapi
│ ├── home.go
│ └── protobuf
│ └── homepb
│ ├── home.pb.go
│ └── home.proto
├── cmd
│ └── main.go
├── conf
│ └── app.toml
├── main.go
└── tools
└── build.sh
路由
1. http 路由
@reference example/app/modules/home/homehttp/home.go
2. cmd 路由
@reference example/app/modules/home/homecmd/home.go
3. task 路由
@reference example/app/modules/home/hometask/home.go
4. rpc 路由
@reference example/app/modules/home/homerpc/home.go
配置
- 位置:
conf/app.toml
- 解析:
conf.go
- 使用:
@reference libs/orm/orm.go line 29
组件
- 全局容器:
com.go
- 使用:
@reference libs/rds/redis_test.go
模块
1. 模块基础目录
dao model http rpc task cmd
2. 创建新模块
在项目根目录下,使用yago创建模块 新创建的模块会自动将路由加载到myapp/routes中
cd myapp
yago new -m newmodule
错误
# 系统级错误定义处
error.go
# 使用
@reference example/app/modules/homehttp/home.go::AddAction
Third
- 目录规范
@see example/app/third
- http-api 使用样例
@reference example/app/third/homeapi/home.go