大家好,欢迎来到IT知识分享网。
现如今,Go 语言越来越多地被用于后端服务开发中。但与已经十分成熟的 Java 相比较,Go 目前仍缺乏一个全面的服务应用开发框架,在进行开发时往往仍需要大量造轮子。GoFrame,其目的是为 Go 语言提供一个企业级的基础开发框架,提高开发效率和可靠性。

简介
GoFrame,是 johng 在 Gitee 上开源的 Go 基础开发框架,仓库位于
https://gitee.com/johng/gf,目前版本为 v2.0.6。
GoFrame 是一款模块化、高性能、企业级的 Go 基础开发框架。GoFrame 不是一款 WEB/RPC 框架,而是一款通用性的基础开发框架,是 Go 标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。

使用
GoFrame 具有以下特点:
- 业内领先、工程完备
- 模块化、松耦合设计
- 组件丰富、开箱即用
- 简洁易用、文档详尽
- 接口化、高扩展性设计
- 全链路跟踪特性
- 全错误堆栈特性
- 接口化的错误码支持
- 稳健的工程设计规范
- 更便捷强大的ORM组件
- 便捷的开发工具、自动化代码生成
- 支持OpenTelemetry可观测性标准
- 自动化的接口文档生成,支持OpenAPIV3标准
- 完善的本地中文化支持
- 设计为团队及企业使用
在项目中使用 GoFrame,使用 go get 直接安装,要求 Go >= 1.15:
go get -u -v github.com/gogf/gf/v2
推荐使用 go.mod:
require github.com/gogf/gf/v2 latest
GoFrame 架构如下:

GoFrame 使用 CLI 工具来构建服务,首先安装 GoFrame CLI 工具:
go install github.com/gogf/gf/cmd/gf/v2
然后使用 init 命令创建一个指定名称的项目:
$ gf init hello
输出:
initializing... initialization done! you can now run 'cd hello && gf run main.go' to start your journey, enjoy!
我们就能得到一个基本的 Go 服务项目。可以构建一个最简单的 API 服务:
package v1 import ( "github.com/gogf/gf-demo-user/v2/internal/model/entity" "github.com/gogf/gf/v2/frame/g" ) type UserProfileReq struct { g.Meta `path:"/user/profile" method:"get" tags:"UserService" summary:"Get the profile of current user"` } type UserProfileRes struct { *entity.User } type UserSignUpReq struct { g.Meta `path:"/user/sign-up" method:"post" tags:"UserService" summary:"Sign up a new user account"` Passport string `v:"required|length:6,16"` Password string `v:"required|length:6,16"` Password2 string `v:"required|length:6,16|same:Password"` Nickname string } type UserSignUpRes struct{} type UserSignInReq struct { g.Meta `path:"/user/sign-in" method:"post" tags:"UserService" summary:"Sign in with exist account"` Passport string `v:"required"` Password string `v:"required"` } type UserSignInRes struct{} type UserCheckPassportReq struct { g.Meta `path:"/user/check-passport" method:"post" tags:"UserService" summary:"Check passport available"` Passport string `v:"required"` } type UserCheckPassportRes struct{} type UserCheckNickNameReq struct { g.Meta `path:"/user/check-passport" method:"post" tags:"UserService" summary:"Check nickname available"` Nickname string `v:"required"` } type UserCheckNickNameRes struct{} type UserIsSignedInReq struct { g.Meta `path:"/user/is-signed-in" method:"post" tags:"UserService" summary:"Check current user is already signed-in"` } type UserIsSignedInRes struct { OK bool `dc:"True if current user is signed in; or else false"` } type UserSignOutReq struct { g.Meta `path:"/user/sign-out" method:"post" tags:"UserService" summary:"Sign out current user"` } type UserSignOutRes struct{}
除了用于构建服务,GoFrame 还提供了大量用于库开发的模块,包括:
- 数据结构:字典类型、数组类型、集合类型等
- 系统相关:定时器、内存锁、定时任务、缓存管理等
- 文本处理:字符串处理、正则表达式
- 编码解码:二进制、HTML、XML、YAML 等
- 数据管理:数据库 ORM、Redis 客户端
- 加密解密:MD5、AES、DES 等
- 实用工具:随机数、唯一数、类型转换、数据校验等
- 单元测试:单元测试
- 错误管理:错误处理、错误码接口
- 功能调试
- I18N组件
如定时任务 gcron:
import "github.com/gogf/gf/v2/os/gcron"
gcron.AddSingleton(ctx, "* * * * * *", func(ctx context.Context) { glog.Print(context.TODO(), "doing") time.Sleep(2 * time.Second) }) select {}
数据库 ORM:
db, err := gdb.New(gdb.ConfigNode{ Link: "mysql:root:@tcp(127.0.0.1:3306)/test", })
总结
GoFrame 是一款模块化、高性能、企业级的 Go 基础开发框架,是 Go 标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队,不妨考虑应用到实践中。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/172177.html