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.

目录
相关文章
|
开发框架 程序员 Go
发现了一款神仙级别的Go框架:GoFrame
最近发现了一款非常好用的基于go语言的web开发框架,非常适合PHP转Go的同学使用,在很多设计思想和使用上和PHP的Laravel框架非常像。
1032 0
发现了一款神仙级别的Go框架:GoFrame
|
算法 数据可视化 网络可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化
R语言Apriori算法关联规则对中药用药复方配伍规律药方挖掘可视化(上)
|
前端开发 Java API
Knife4j使用教程
Knife4j使用教程
2141 0
|
Web App开发 前端开发 索引
|
前端开发 NoSQL Redis
大文件上传:秒传、断点续传、分片上传
大文件上传:秒传、断点续传、分片上传
3283 2
|
9月前
|
监控 NoSQL PHP
高并发手机直播系统:从直播架构设计开发到搭建部署上线
本文深入剖析高并发直播系统全链路架构与实战:涵盖需求分析、微服务设计、移动端优化、PHP后台性能提升、CentOS环境调优、CDN加速及运维监控,助力打造稳定、低延迟、可扩展的直播平台。
|
存储 Java 程序员
Minio 小技巧 | 通过编码设置桶策略,实现分享永久可下载
Minio 小技巧 | 通过编码设置桶策略,实现分享永久可下载
1303 1
|
Kubernetes 关系型数据库 应用服务中间件
在Kubernetes集群上部署高可用Harbor镜像仓库
这里主要介绍使用kubectl部署Harbor镜像仓库到Kubernetes集群中。 使用Helm部署,参考: https://my.oschina.net/u/2306127/blog/1819691 https://blog.csdn.net/Yan_Chou/article/details/79715995 关于基于Harbor的高可用私有镜像仓库,在我的博客里曾不止一次提到,在源创会2017沈阳站上,我还专门以此题目和大家做了分享。
3329 0
|
10月前
|
传感器 监控 安全
HarmonyOS NEXT 5.0 的星闪(NearLink)开发应用案例
V哥分享HarmonyOS NEXT 5.0星闪开发实战,涵盖智能车钥匙无感解锁与工业传感器监控。低延迟、高可靠,代码完整,速来学习!
1188 0
|
传感器
STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)
STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)
893 0
STM32:串口协议(内含:1.通信接口+2.串口通信+3.硬件电路+4.电平标准+5.串口参数及时序+6.串口时序)

热门文章

最新文章