GoFrame – 模块化企业级工程化的 Go 基础开发框架

GoFrame – 模块化企业级工程化的 Go 基础开发框架GoFrame 是 johng 在 Gitee 上开源的 Go 基础开发框架 仓库位于 见原文链接 目前版本为 v2 0 6

大家好,欢迎来到IT知识分享网。

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

GoFrame - 模块化企业级工程化的 Go 基础开发框架

简介

GoFrame,是 johng 在 Gitee 上开源的 Go 基础开发框架,仓库位于
https://gitee.com/johng/gf,目前版本为 v2.0.6。

GoFrame 是一款模块化、高性能、企业级的 Go 基础开发框架。GoFrame 不是一款 WEB/RPC 框架,而是一款通用性的基础开发框架,是 Go 标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。

GoFrame - 模块化企业级工程化的 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 - 模块化企业级工程化的 Go 基础开发框架

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

(0)
上一篇 2025-03-02 11:45
下一篇 2025-03-02 12:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信