GoFrame是一款模块化、高性能、企业级的Go基础开发框架。GoFrame是一款通用性的基础开发框架,是Golang标准库的一个增强扩展级,包含通用核心的基础开发组件,优点是实战化、模块化、文档全面、模块丰富、易用性高、通用性强、面向团队。GoFrame既可用于开发完整的工程化项目,由于框架基础采用模块化解耦设计,因此也可以作为工具库使用。

如果您想使用Golang开发一个业务型项目,无论是小型还是中大型项目,GoFrame是您的不二之选。如果您想开发一个Golang组件库,GoFrame提供开箱即用、丰富强大的基础组件库也能助您的工作事半功倍。如果您是团队Leader,GoFrame丰富的资料文档、详尽的代码注释、活跃的社区成员将会极大降低您的指导成本,支持团队快速接入、语言转型与能力提升。

特点

  • 业内领先、工程完备
  • 模块化、松耦合设计
  • 组件丰富、开箱即用
  • 简洁易用、文档详尽
  • 接口化、高扩展性设计
  • 全链路跟踪特性
  • 全错误堆栈特性
  • 接口化的错误码支持
  • 稳健的工程设计规范
  • 更便捷强大的ORM组件
  • 便捷的开发工具、自动化代码生成
  • 支持OpenTelemetry可观测性标准
  • 自动化的接口文档生成,支持OpenAPIV3标准
  • 完善的本地中文化支持
  • 设计为团队及企业使用

技术架构

GoFrame的技术架构旨在解决Golang项目工程化的问题,通过提供统一的、实战化工程开发规范及配套落地的开发工具,自动化的数据模型及数据库操作代码生成,自动化的OpenAPIv3接口文档生成等功能特性,提高业务项目开发维护效率。

社区支持

GoFrame拥有一个活跃的社区,社区成员乐于分享和帮助,为开发者提供了良好的交流和学习平台。社区模块主要由社区贡献并维护,大部分也是由gf主仓库的贡献者提供及维护。

用途和适用场景

GoFrame适用于各种规模的项目,无论是小型还是中大型项目,都可以使用GoFrame进行开发。它特别适合企业及团队使用,因为其模块化、高性能和易于维护的特性,可以帮助团队快速接入、语言转型与能力提升。

安装和使用

安装GoFrame非常简单,可以通过go get命令直接安装,推荐使用go.mod进行管理,以确保依赖的准确性和版本控制。

go get -u -v github.com/gogf/gf/v2

框架提供的开发工具为开发者提供了便捷的开发指令简化开发工作,提供了例如工程脚手架、代码自动生成、工具及框架更新等实用命令。

工具下载地址:https://github.com/gogf/gf/releases

预编译安装

预编译安装是开源社区预编译好的二进制文件,供开发者直接使用,二进制文件托管存放到github仓库中。

  • MAC环境
wget -O gf "https://github.com/gogf/gf/releases/latest/download/gf_$(go env GOOS)_$(go env GOARCH)" && chmod +x gf && ./gf install -y && rm ./gf
  • Linux环境
wget -O gf "https://github.com/gogf/gf/releases/latest/download/gf_$(go env GOOS)_$(go env GOARCH)" && chmod +x gf && ./gf install -y && rm ./gf
  • Windows环境

手动下载对应的二进制文件,双击按照终端指令安装即可。如果双击安装失败,请采用最后万能的手动编译安装方式。

手动编译安装

通过下载源码到本地编译生成二进制后安装到系统目录,这是万能的安装方式:

git clone https://github.com/gogf/gf && cd gf/cmd/gf && go install

验证安装成功

执行gf -v指令如果能打印出例如以下信息,表示您已成功安装好了框架工具 👍

$ gf -v
GoFrame CLI Tool v2.1.3, https://goframe.org
GoFrame Version: cannot find goframe requirement in go.mod
CLI Installed At: /Users/john/Workspace/Go/GOPATH/bin/gf
CLI Built Detail:
  Go Version:  go1.17.13
  GF Version:  v2.1.3
  Git Commit:  2022-08-22 14:40:48 91d8d71821012aef4a35b5f9e7b4fbfc04f3ffe7
  Build Time:  2022-08-22 14:48:37

注意其中的Go/GF Version是当前编译的二进制文件使用的Golang及GoFrame框架版本,其中的GoFrame Version是当前项目使用的GoFrame框架版本(自动检测当前目录下的go.mod)。

创建项目模板

gf init demo -u

该命令创建一个工程脚手架目录,项目名称是demo,其中的-u参数用户指定是否更新项目中使用的goframe框架为最新版本。框架有独特的项目工程结构,工程目录结构介绍具体请参考:工程目录设计

运行项目模板

项目模板可以执行以下命令运行:

cd demo && gf run main.go

其中的gf run是框架开发工具的动态编译命令,也可以替换为go run命令。
执行后,终端输出:

$ cd demo && gf run main.go
build: main.go
go build -o ./main  main.go
./main
build running pid: 76159
2022-08-22 12:20:59.058 [INFO] swagger ui is serving at address: http://127.0.0.1:8000/swagger/
2022-08-22 12:20:59.058 [INFO] openapi specification is serving at address: http://127.0.0.1:8000/api.json
2022-08-22 12:20:59.059 [INFO] pid[76159]: http server started listening on [:8000]

  ADDRESS | METHOD |   ROUTE    |                             HANDLER                             |           MIDDLEWARE
----------|--------|------------|-----------------------------------------------------------------|----------------------------------
  :8000   | ALL    | /*         | github.com/gogf/gf/v2/net/ghttp.internalMiddlewareServerTracing | GLOBAL MIDDLEWARE
----------|--------|------------|-----------------------------------------------------------------|----------------------------------
  :8000   | ALL    | /api.json  | github.com/gogf/gf/v2/net/ghttp.(*Server).openapiSpec           |
----------|--------|------------|-----------------------------------------------------------------|----------------------------------
  :8000   | GET    | /hello     | demo/internal/controller.(*cHello).Hello                        | ghttp.MiddlewareHandlerResponse
----------|--------|------------|-----------------------------------------------------------------|----------------------------------
  :8000   | ALL    | /swagger/* | github.com/gogf/gf/v2/net/ghttp.(*Server).swaggerUI             | HOOK_BEFORE_SERVE
----------|--------|------------|-----------------------------------------------------------------|----------------------------------

默认情况下项目会设置Web服务端口为8000、开启OpenAPI接口文档、展示Swagger接口文档页面,这些关键信息都会展示到终端。默认情况下,会打印所有的路由信息到终端,该项目模板只会添加一个仅供演示的路由:/hello。

用户案例

GoFrame被腾讯科技、中兴科技、蚂蚁金服等知名企业使用,这些案例证明了GoFrame在生产环境中的稳定性和可靠性。

开源协议

GoFrame使用非常友好的MIT开源协议进行发布,永久100%开源免费,鼓励社区参与和贡献。

通过以上介绍,可以看出GoFrame是一个功能全面、易于使用、社区活跃的Go语言开发框架,适合各种规模的项目和企业使用。