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

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

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

视频教程💖

🐸 赛,我在社区中发现有同学居然做了挺不错的入门系列视频教程💖,因此贴到快速开始教程的最前面分享给大家,新来的同学可以直接看视频教程,随后再看看后续章节,可以事半功倍https://www.bilibili.com/video/BV1Uu4y1u7kX

安装框架工具

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

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

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

手动编译安装

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

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

常见问题注意事项:🔥如果您使用的是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

更进一步了解




Content Menu

  • No labels

35 Comments

  1. make命令怎么配置啊?

    找不到make命令呢

    1. Learn Makefiles With the tastiest examples https://makefiletutorial.com/

      Unix Makefile 教程 https://lellansin.gitbooks.io/makefile/content/

      这俩个教程,多看看 

      1. 刚哥 --我想问一下安装完gf在命令行输入gf-v找不到命令行,但是我的环境变量没问题,在goland中又可以打印出gf的版本 ,哭死了,这到底算装好了吗

  2. 基于goframe v2做了通用后台管理系统,求指点推荐 https://gitee.com/licxpro/miaoyu

    1. 居然是layui,看不下去

      1. 咱们要鼓励动起来的兄弟们

      2. layui招你了?

      3. 怎么了,即然你这么看不下去,那过些日子我也基于layui写一个

    2. 前端也用点心,,,确实丑的离谱

    3. 系统设置那里可以引入echarts图,我认为会更加美观

  3. ::win文件名:creat-goframe-project.bat
    @echo off
    echo.
    echo.
    echo ###################### 欢迎使用GoFrame ######################
    echo.
    echo.
    :again
    echo 请输入创建的项目名称(回车结束):
    set /p name=

    if "%name%"=="" (
    goto again
    )

    gf init %name% -u

    echo.
    echo.
    echo  完成 %name% 项目创建,按任意键开始GoFrame之旅吧!
    echo.
    echo.
    pause

  4. 请问有离线文档吗

    1. 同求, 我也希望可以有离线的文档, 主要是我不想持续升级. 现在的gf版本用着已经很舒服了. 我想保存一份备用

        1. 亮仔, chm 好搞不, 感觉比pdf好用. 不过pdf这个我也很满足了. 谢谢.

          1. 不知道,有空研究一下

    2. 或者谁有办法能离线goframe.org的文档,  我试过几种工具, 都没成功.

        1. 好嘞, 谢谢强哥. 

      1. 亮仔, 你这是自动生成的吗, 为啥会这么及时, 每次点开都是最新的

        1. 现在是定时每3天更新,具体配置看项目流水线配置。

  5. 手动安装无法安装

    1. go  install 后gf生成在  $GOPATH/bin  下面,确保 $GOPATH/bin  目录在 $PATH 下面就行了 (我就是一开始没有反应,在 ~/.bashrc 添加我的 $GOPATH/bin 目录 /home/sjg/go/bin 就好了)

  6. 生成的目录结构里面,每个目录下面建议使用一个空的README.md文件来替代.gitkeep。

  7. 我想问一下,我安装完成后使用命令gf -v,打印出来的信息没有CLI Built Detail,这个正常吗

    1. 不影响使用

  8. Mac中使用wget安装,弄了一个周末居然没安装成功,甚至下载都失败,梯子已用,建议能不能弄个国内的安装下载环境

  9. ljc

    gf up -a报错:go get github.com/gogf/gf/v2@latest: module github.com/gogf/gf/v2: reading https://goproxy.cn/github.com/gogf/gf/v2/@v/list: 504 Gateway Timeout
            server response: Gateway Timeout

    1. 今天代理好像挂了,换别的代理试试?

      阿里云:go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

      百度云: go env -w GOPROXY=https://goproxy.bj.bcebos.com/,direct

  10. 能不能把demo放到码云阿。github.com一直无法访问。

    1. 爬墙不是程序员必备技能吗