2023 年了,Golang Go语言中 Web 应该选择 Goframe、Gin、Beego、Iris 哪一项?

发布于 1周前 作者 nodeper 来自 Go语言

op 最近在从 Java 的 SpringBoot 框架转向 Go 开发(大三学生),看了 Go 的一些框架,发现主流的有 Goframe 、Gin 、Beego 、Iris ,不知道目前哪个是最好用的?或者说现在企业一般在用什么框架?


2023 年了,Golang Go语言中 Web 应该选择 Goframe、Gin、Beego、Iris 哪一项?
59 回复

go web 框架之间的差别很小,主要因为标准库在这方面太强大了,框架只能简单地包一层,因此你可以先随便挑一个学,再学另一个框架是毫无难度的

更多关于2023 年了,Golang Go语言中 Web 应该选择 Goframe、Gin、Beego、Iris 哪一项?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


推荐 Gin 的最多

gf 和 beego 都是国人开发的大而全的框架,gf 是新开发的,beego 早一些。
gin 和 iris 是精小的框架。gin 知名度最高,iris 的特点是底层用的 fasthttp ,都说性能更好。
我推荐另一款框架,gofiber ,后起之秀,功能较多,但不是啥都大包大揽,还是围绕在框架本身。底层也是 fasthttp 。
用它写过了一些项目,没遇到明显的坑。

gin 用的人多,个人比较倾向于 go fiber

#3 谢谢前辈指导。又让我开阔了眼界…

go echo 。gin 的路由太难用了,而且官网超拉

我用 grpc 然后自己包装下

外行表示… 你发的顺序似乎就是目前流行程度, gf 比较新但是挺多人推荐的

没必要这么卡技术栈,何况还是在校生

如果只是 web 框架,目前绝大多数都是在 go 的 net 标准库上实现路由系统以及中间件系统而已。没有太多区别。有区别的,往往不是那么主流

选择 Gin,当然选择一个 简单的,然后明白了原理,其实就那些玩意儿,选择一个第三方库最多的. 社区活跃的.

说几个比较重要的点吧:
- 路由方不方便
- 中间件支持如何,开发方便不
- 错误处理如何
- 环境变量
- orm 支持
- 看看有没有 demo 来看下项目结构,好的项目结构后面维护的时候会很方便

Goframe 这个框架在接口这一层很难写单元测试。在做框架选型的时候要考虑一下有没有容易写单元测试的。

你还是学生在学习阶段,没用在具体项目上,为啥直接用框架呢?不如从网络开始呢,标准库那么强大,值得学习一下。

试试 fiber 吧,gin 的路由中间件不错但 codec 不太行,beego 不推荐

我选择了 Gin ,看一会文档就会使用了。

不推荐使用 bee go 和 gf 这种框架
架构还是得自己搞,适合自己的最好,大包大揽的框架里有时候想实现某些东西的时候会非常非常别扭

想要上手快 文档全 API 直观的肯定是 gin 了

不想太折腾,选 Gin 会好一些。

个人几年前随机选了 echo ,也还行吧,一直用到现在。但生态差很多,很多第三库没人维护,遇到 bug 需要自己去解决。

1l 说完了,gin echo iris 之类的都差不多,用一个之后其他的基本就会了,我一直用的 echo

学生的话,建议先直接用 net 标准库,然后再用这些框架。

Hertz 比较好

gofiber 从维护积极性、文档组件齐全程度、易用度、qps 性能、硬件资源消耗五边图来看,应该是个五边形战士

gin 用的人多,star 最多,但是性能属于中等级别

感觉性能开销其实对于比较重的业务来说差异不是很大,最好选一个生态比较完善的框架,其他框架不太了解,gin 使用下来大部分 middleware 都有现成的,社区讨论的人也挺多,google 找问题好找。
其他框架也可以分析一下看看,我觉得框架主要在于我能随时找到我要的组件并集成进来,有问题能找到解决方案,就比较满意了。

试试 fiber 吧,gin 的路由中间件不错但 codec 不太行,beego 不推荐

我用的 Hertz

我的建议是老老实实学 java ,不然你以后工作都难找。

用 :param 作为路径参数的我都不考虑

首先排除 gf

现在 Beego 还能上比较吗

推荐我厂的 Hertz

没遇到什么坑

至少内外部同源的,内部的包只是加了一些内部基建的适配,套了个壳,底层还是 import 了 GitHub 上面的包

go fiber ,现在就在用 fiber + nextjs 写一个自己的玩具项目,遇到问题的时候,查询 fiber 的文档都有解释。

#44 终于有人说这个了…

#44 我有一个小项目,昨天告诉我可能要用 zero

gf 吧,文档以及相关应用都蛮充分.比较好学习

请问处理 PB struct 转成 json,未赋值字段, json 相关 KEY 被省略掉.你是怎么处理的? 我设置了序列化参数 . 另外,PB 结构体数组类型进行 json 序列化, 是 PB 定义一个 list 来处理吗?

生成的 PB 属性默认都是 json:“uuid,omitempty”,要么通过 protoc-X 工具去自定义干预 json 定义,如 protoc-gen-gogo 或者设置序列化参数,或序列化使用 protobuf:name=uuid,proto3" 中的 name 作为 json 序列化的参数名。

gin 吧

api 稳定很重要 不能光看他有啥功能,给你整一个大升级 比较难搞

go fiber 挺不错

gin 最多,但是我觉得 echo 更好用呢

咱推荐框架怎么也应该来个地址吧 purewhite ?😂

https://github.com/cloudwego/hertz

Hertz 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp 、gin 、echo 的优势,并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。如今越来越多的微服务选择使用 Golang ,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择

一直用这个 github.com/valyala/fasthttp ,记得好像不支持 http2.0 ,其他都 ok

谢谢…这个方法对我来说,太繁琐了…我找了一个简单粗暴的办法…
#json 小写
sed -i.bak ‘s/(json:")([A-Za-z]+)(.*")/\1\L\2\3/g’ server.pb.go
#json
sed -i ‘s/,omitempty//g’ server.pb.go

老哥 go fibber 怎么断点啊

在选择Golang的Web框架时,Goframe、Gin、Beego、Iris都是值得考虑的选项。以下是对这四个框架的简要分析:

  • Goframe:该框架的中文文档详尽,源码易于学习,适合快速上手。其模块化设计允许按需引用,适合PHP转Go的团队,能够迅速在团队中推广Golang技术。
  • Gin:Gin是Golang中最流行的Web框架之一,以其高性能路由和中间件支持而闻名。它适合快速构建API和Web应用,特别适用于需要高性能的场景。
  • Beego:作为一个MVC框架,Beego提供了完整的Web开发解决方案。它易于使用且高效,特别适合团队大项目的开发。Beego的RESTFul设计和丰富的功能使其成为构建复杂Web应用的理想选择。
  • Iris:Iris以其高性能和易用性脱颖而出。它提供了全面的示例和文档,帮助开发者快速上手。Iris还支持自定义路由器、中间件和HTTP错误处理,以及多种模板引擎的整合,为开发者提供了极大的灵活性。

综上所述,选择哪个框架取决于项目的具体需求和团队的技术背景。对于初学者或需要快速上手的团队,Goframe和Gin可能是更好的选择。对于需要构建复杂Web应用或大型团队的场景,Beego和Iris则提供了更全面的解决方案。

回到顶部