分享一篇最新的Golang学习项目
1. 技术栈:
- Gin:Gin 是一个用 Go (Golang) 编写的轻量级 HTTP Web 框架,使用责任链模式对中间件加载进行,并且内部封装Sync.Pool、RouterGroup等多种强大的内部组件,是一个较为流行的框架,但开放度太高,容易导致一个人一个开发风格。
go get github.com/gin-gonic/gin
- Gorm:是使用较多的一个Object Relational Mapping:对象关系映射。
go get gorm.io/gorm
- go-redis:Golang中操作Redis的库
go get github.com/go-redis/redis
- go-jwt: Golang中使用Jwt认证的库
go get github.com/golang-jwt/jwt
- GoCron: Golang中使用的定时任务库:
go get github.com/go-co-op/gocron
2. 架构设计
项目设计架构思想为经典的MVC模式,巧妙的对Gin和Gorm进行封装联动使用,极大的简化和规范化开发流程其中的设计理念需要大家自己去探索,相信你一定有所收获。
client/ #WEB客户端
common/ #存放通用内容的包
|---e #存放自定义错误、错误code、code对应消息。
|---code.go
|---error.go
|---msg.go
|---enum #存放自定义枚举、常量、变量
|---utils#工具包、例如jwt、limit限流、Email邮件、泛型工具函数
|---result.go#自定义通用数据返回格式
config/ #项目配置文件
|---application-dev.yaml
|---application-release.yaml
|---config.go #配置文件解析类
global/ #全局包,存放例如:GormDB、RedisClient、AllConfig……
|---global.go
initialize/ #初始化包内部主要是需要初始化构建的组件
|---enter.go
|---gorm.go
|---redis.go
|---router.go
internal/ #内部包,这里面主要实现Controller、Service、Repository层的操作。
|---api/
|---model/
|---repository/
|---router/
|service/
logger/ #日志包,用来管理日志
|---log.go
middle/ #中间件包,主要该项目需要使用的中间件、例如身份、权限、限流、等拦截器功能。
|---jwt_middle.go
script/ #脚本包,主要做一些初始化脚本工作,例如MySQL数据初始化脚本、DevOps发布脚本等。
go.mod #goalng的项目依赖文件,类似于java的maven
main.go #入口函数,项目启动从main函数开始。
3.项目链接
Meng-Xin/take-out: 苍穹外卖 Golang,一个规范化的Gin项目开发实例。 (github.com)