Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

大家好,欢迎访问GoFrame框架的快速章节!由于GoFrame是一款模块化、低耦合设计的开发框架,包含了常用的基础组件和开发工具,既可以作为完整的业务项目框架使用也可以作为独立的组件库使用。我们为大家提供的快速开始章节,主要以完整的业务项目介绍框架的基本入门和使用。关于独立组件库使用,可以查看独立的组件章节介绍。

Tip

如果还没有安装/配置好Golang开发环境的小伙伴,可以先参考下Golang环境搭建:准备工作

安装框架工具

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

预编译安装

Mac环境

Code Block
languagexml
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


Note

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

  • 如果当前系统没有安装wget命令,那么请使用brew install wget安装后继续执行该命令。
  • 🔥如果您使用的是zsh终端,可能会存在gf别名冲突(git fetch快捷指令),那么安装后请新建标签或者新开终端来继续使用。

Linux环境

Code Block
languagexml
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


Note

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

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

Windows环境

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

手动编译安装

这是万能的安装方式:

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

验证安装成功

Code Block
languagexml
$ 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是当前编译的二进制文件使用的GolangGoFrame框架版本,其中的GoFrame Version是当前项目使用的GoFrame框架版本(自动检测当前目录下的go.mod)。

Note

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

🔥如果您使用的是

常见问题注意事项:🔥如果您使用的是zsh终端,可能会存在gf别名冲突(git fetch快捷指令),那么安装后请新建标签或者新开终端来继续使用。

创建项目模板

Code Block
languagexml
gf init demo -u

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

Tip

项目模板中提供了一些make命令,用于更便捷地使用框架工具,特别是make climake dao命令在项目开发中比较常用。具体命令介绍请参考项目中的README.MD

运行项目模板

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

Code Block
languagexml
cd demo && gf run main.go


Tip

其中的gf run是框架开发工具的动态编译命令,也可以替换为go run命令。

执行后,终端输出:

Code Block
languagexml
$ 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),执行以下命令更新使用最新的框架版本:

Code Block
languagexml
go get -u github.com/gogf/gf/v2

更进一步了解

Children Display
alltrue
excerptTypesimple





Panel
titleContent Menu

Table of Contents