大家好,欢迎访问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

  • Aucune étiquette

35 commentaires

  1. 钱波 dit :

    make命令怎么配置啊?

    找不到make命令呢

    1. 智刚 dit :

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

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

      这俩个教程,多看看 

      1. Curry dit :

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

  2. licxpro dit :

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

    1. yidashi dit :

      居然是layui,看不下去

      1. 智刚 dit :

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

      2. 小陈 dit :

        layui招你了?

      3. 小林 dit :

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

    2. 灰太狼 dit :

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

    3. 欧维 dit :

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

  3. 陈超 dit :

    ::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. solowu dit :

    请问有离线文档吗

    1. 小陈 dit :

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

        1. 小陈 dit :

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

          1. 海亮 dit :

            不知道,有空研究一下

    2. 小陈 dit :

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

        1. 小陈 dit :

          好嘞, 谢谢强哥. 

      1. 小陈 dit :

        海亮牛逼

      2. 小陈 dit :

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

        1. 海亮 dit :

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

  5. dit :

    手动安装无法安装

    1. Beta Shen dit :

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

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

  7. xieli dit :

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

    1. 海亮 dit :

      不影响使用

  8. 刘振 dit :

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

  9. ljc dit :

    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. 小e dit :

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

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

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

  10. 肖大大 dit :

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

    1. 小陈 dit :

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