GoFrame第一天

简介: GoFrame第一天

GoFrame day1


前言


之前总结过gin的一些知识,同时也说过有时间会再开一个专栏讲讲GoFrame这个web框架,今天开始就来慢慢填坑


开始


环境安装


这里我默认大家最基础的go语言环境都已经配置好了,我的系统是ubuntu20,golang版本之前为了体验范型升级到了1.18.1

image.png

然后创建项目go mod init 项目名,设置go mod的依赖require github.com/gogf/gf/v2 v2.0.6,接着运行go mod tidy自动配置

测试一下GoFrame环境是否安装成功


package main
import "github.com/gogf/gf/v2"
func main() {
  println("Hello Goframe")
  println(gf.VERSION)
}


image.png


还没有结束,因为GoFrame默认是不支持热启动的,所以如果想更加简单地使用GoFrame还需要配置一下它的官方cli工具


根据自己的系统和版本下载对应的预编译文件,配置起来也很简单.以ubuntu为例,先设置中允许作为可执行文件,然后再命令行中输入sudo ./gf_xxxx_xxx install

image.png

一般都是存在/usr/bin下,想存在其他位置也可以,然后运行gf -v测试一下是否安装成功

image.png

gf run可以热启动服务,下面写一个简单的服务然后用gf工具运行试试效果


package main
import (
  "github.com/gogf/gf/v2/frame/g"
  "github.com/gogf/gf/v2/net/ghttp"
)
func main() {
  s := g.Server()
  s.BindHandler("/", func(r *ghttp.Request) {
    r.Response.Writeln("Welcome GoFrame")
  })
  s.BindHandler("/hello", func(r *ghttp.Request) {
    r.Response.Writeln("Hello GoFrame")
  })
  s.SetPort(8080)
  s.Run()
}
复制代码


image.png


image.png

然后更改一下输出的内容,不用重启服务直接刷新页面


image.png

image.png

看看源码


以上面的例子来看看GoFrame框架到底在背后做了哪些事情?因为看过了不少框架的源码,大多数的框架所做的工作大体上是差不多的,所以在看源码之前大概猜测一下.首先从字面来看,g.Server()实例化一个实现http请求的对象,可能GoFrame会丰富一些操作这也是各个框架的改进之处.然后s.BindHandler就是绑定一个处理器,针对一个路由对应一个处理函数.下面就来具体看看一步步是怎么实现的.


image.png

image.png


g.Server是一个结构体,封装了http.Server而且添加了更丰富的特征.再来看看用到最多的路由处理器绑定的实现

image.png


首先对处理器函数检查,然后执行绑定处理器.将每一个创建的路由item(包括路由和对应的处理器函数)注册到路由树里.执行run的时候会首先调用Start()方法实现一些初始化和设置


image.png

可能很多人会好奇运行之后打印的一些日志以及那个路由表格是怎么得到的,其实仔细看就在dumpRouterMap()方法中.


image.png


设置了table的headers头部,然后通过遍历每个routes得到里面的信息,如处理器函数名,路由地址,对应的路由方法,中间件名…最后全部添加到table里面并render展示出来

image.png


结尾


今天简单布置一下GoFrame的基本环境,并且写了一个“Hello World”作为例子简单的分析了一下底层的一些逻辑,其实还是那句话框架大多都是大同小异的,只是有些功能更强大有些更灵活.接下来我也会慢慢更新这个专栏,一起学习GoFrame.

目录
相关文章
|
1月前
|
人工智能 安全 API
2026年OpenClaw(Clawdbot)阿里云及本地部署喂饭级教程+Skills技能落地实战
OpenClaw(前身为Moltbot,别名Clawdbot)作为2026年AI智能代理领域的核心工具,其真正价值在于开放的Skills技能生态——裸奔状态下仅能理解自然语言的“实习生”,搭载1715+个社区贡献技能后,瞬间变身覆盖开发、办公、创作、生活等全场景的“全能执行助手”。本文基于最新实操经验,完整拆解2026年阿里云轻量应用服务器一键部署与Windows本地部署流程,深度解析Skills技能的安装、组合、最佳实践,所有代码命令可直接复制执行,帮助用户从部署到技能落地全流程打通,让AI真正从“聊天”升级为“干活”。
868 1
|
10月前
|
API PHP
PHP 8新特性:Match表达式与联合类型实战指南
PHP 8新特性:Match表达式与联合类型实战指南
uniapp页面之间通信、传参、传值方法(父→传→子,子→传→父);获取被打开页面的数据→传→当前页面;当前页面的数据→传→被打开页面
uniapp页面之间通信、传参、传值方法(父→传→子,子→传→父);获取被打开页面的数据→传→当前页面;当前页面的数据→传→被打开页面
|
6月前
|
监控 NoSQL PHP
高并发手机直播系统:从直播架构设计开发到搭建部署上线
本文深入剖析高并发直播系统全链路架构与实战:涵盖需求分析、微服务设计、移动端优化、PHP后台性能提升、CentOS环境调优、CDN加速及运维监控,助力打造稳定、低延迟、可扩展的直播平台。
|
7月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
957 0
|
11月前
|
人工智能 自然语言处理 前端开发
【CodeBuddy】三分钟开发一个实用小功能之:马赛克生成器
CodeBuddy是一款强大的AI编程助手,可快速生成代码框架、调试优化程序并支持多语言开发。本文通过一个“马赛克生成器”小工具展示了其应用场景:用户可通过自然语言描述需求,快速完成原型开发。该工具包含HTML、CSS和JS三部分,实现图片上传、马赛克效果调整及下载功能。未来,CodeBuddy有望加入实时协作功能,进一步提升团队开发效率,成为开发者不可或缺的伙伴。
369 12
【CodeBuddy】三分钟开发一个实用小功能之:马赛克生成器
|
算法 数据可视化 网络可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
|
人工智能 分布式计算 算法
3D-Speaker多模态说话人问题之3D-Speaker的开源代码和数据集如何获取
3D-Speaker多模态说话人问题之3D-Speaker的开源代码和数据集如何获取
586 1
|
SQL 关系型数据库 MySQL
MySQL Online DDL(Data Definition Language)
MySQL Online DDL(Data Definition Language)
331 1
|
编解码 Rust 前端开发
纯前端也能实现在线GIF压缩
纯前端也能实现在线GIF压缩