Skip to main content
Version: Latest

从本章节开始,我们主要主要以完整的业务项目为主,介绍如何使用框架提供的脚手架完成一个简单的业务项目。

warning

在进一步开始之前请您注意,由于 GoFrame 算得上真正意义的 Golang 企业级、工程化的开发框架,她设计严谨、易于使用、文档丰富且社区活跃, 一旦您学习并掌握了框架的使用,您将难以回到过去刀耕火种的开发年代

安装框架工具

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

工具下载地址: 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

您可能会遇到以下常见问题:

  • 如果当前系统没有安装 wget 命令,那么请使用 brew install wget 安装后继续执行该命令。
  • 🔥如果您使用的是 zsh 终端,可能会存在 gf 别名冲突( git fetch 快捷指令),那么安装后(至少执行一次)请 重启终端软件 来继续使用。

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

如果系统没有安装 wget 命令:

  • Ubuntu/Debian 系统请使用 apt-get install wget -y
  • CentOS/RedHat 系统请使用 yum install wget -y

Windows 环境

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

手动编译安装

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

go install github.com/gogf/gf/cmd/gf/v2@latest

验证安装成功

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

$ gf -v
v2.7.4
Welcome to GoFrame!
Env Detail:
Go Version: go1.23.1 darwin/arm64
GF Version(go.mod): cannot find go.mod
CLI Detail:
Installed At: /Users/john/go/bin/gf
Built Go Version: go1.23.1
Built GF Version: v2.7.4
Others Detail:
Docs: https://goframe.org
Now : 2024-10-29T13:30:30+08:00

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

info

常见问题注意事项:🔥如果您使用的是 zsh 终端,可能会存在 gf 别名冲突( git fetch 快捷指令),那么安装后(至少执行一次)请 重启终端软件 来继续使用。

创建项目模板

gf init demo -u

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

框架的脚手架目录是按照通用性设计的,可以满足WEB、终端、微服务等业务开发场景。默认会生成一个 HTTP Web Server 的模板项目。在理解完成目录含义后,如果其中有不需要的目录,可以自行删除。

运行项目模板

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

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

默认路由: http://127.0.0.1:8000/hello

Swagger 接口文档页面:

升级框架版本

随时可以在项目根目录下(目录下有 go.mod),执行以下命令更新使用最新的框架版本:

gf up -a