Skip to content

geekeryy/go-layout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-layout 业务框架

Website GitHub code size in bytes GitHub GitHub issues GitHub go.mod Go version GitHub tag (latest by date) GitHub pull requests GitHub commit activity GitHub last commit GitHub repo size GitHub language count GitHub top language

TODO

  • 事件总线
  • 优雅处理xenv

安装

go install github.com/comeonjy/go-kit/cmd/kit

kit new demo-project

前置工作

go install \
	github.com/google/wire/cmd/wire@latest \
	golang.org/x/tools/cmd/stringer@latest \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@latest \
    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@latest \
    google.golang.org/protocpbuf/cmd/protoc-gen-go@latest \
    google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest \
    github.com/envoyproxy/protoc-gen-validate@latest

目录结构

.
├── api [ pb ]
├── cmd [ 程序入口 ]
├── configs [ 配置 ]
├── docs [ 文档 ]
├── internal
│   ├── domain [ DDD领域层 ]
│   │   ├── aggregate [ 聚合 ]
│   │   ├── entity [ 实体 ]
│   │   ├── repository [ 仓储接口/资源库 ]
│   │   └── valobj [ 值对象 ]
│   ├── infra [ DDD基础设施层 ]
│   │   ├── event
│   │   ├── mq 
│   │   └── persistence [ 数据库持久层 ]
│   ├── server [ DDD接口层 ]
│   └── service [ DDD应用层 ]
├── main.go
├── pkg [ 工具库 ]
├── tests [ 测试包 ]
└── third_party [ 三方包 ]


版本管理( SemVer

版本格式:主版本号.次版本号.修订号

  1. 主版本号:当你做了不兼容的API修改
  2. 次版本号:当你做了向下兼容的功能性新增
  3. 修订号:当你做了向下兼容的问题修正

Git Flow 分支管理

  • master:主分支(用于版本发布,始终与线上一致)
  • dev:开发分支(用于开发,提测时,从dev检出release-1.0.0分支)
  • release: 预发布(用于测试,测试中有问题直接修改,测试完成后合并入master和dev)
  • feature-*:功能分支(用于功能开发,完成后合并到dev)
  • hotfix-*:修复bug(从master分出来,完成后合并到master和dev)

Git提交规范

  • feat:新功能(feature)
  • fix:修补bug
  • doc::文档(documentation)
  • style: 格式(不影响代码运行的变动)
  • refactor:重构(即不是新增功能,也不是修改bug的代码变动)
  • test:增加测试
  • chore:构建过程或辅助工具的变动

import 规范

import (
    // 标准库

    // 三方库

    // 本地库
)

API规范

Restful

  • 返回值结构 错误示例:
{
  "code": 1001,
  "msg": "数据更新失败"
}

成功示例:

{
  "xxx": "xxx"
}

JetBrains OS licenses

go-layout是根据JetBrains s.r.o 授予的免费JetBrains开源许可证与GoLand一起开发的,因此在此我要表示感谢。

License

© JiangYang, 2020~time.Now

Released under the Apache License

参考资料

[1] Factor12

[2] DDD分层架构实践