2023 年了,Golang Go语言中 Web 应该选择 Goframe、Gin、Beego、Iris 哪一项?
op 最近在从 Java 的 SpringBoot 框架转向 Go 开发(大三学生),看了 Go 的一些框架,发现主流的有 Goframe 、Gin 、Beego 、Iris ,不知道目前哪个是最好用的?或者说现在企业一般在用什么框架?
2023 年了,Golang Go语言中 Web 应该选择 Goframe、Gin、Beego、Iris 哪一项?
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 然后自己包装下
gogogo
外行表示… 你发的顺序似乎就是目前流行程度, gf 比较新但是挺多人推荐的
没必要这么卡技术栈,何况还是在校生
如果只是 web 框架,目前绝大多数都是在 go 的 net 标准库上实现路由系统以及中间件系统而已。没有太多区别。有区别的,往往不是那么主流
选择 Gin,当然选择一个 简单的,然后明白了原理,其实就那些玩意儿,选择一个第三方库最多的. 社区活跃的.
说几个比较重要的点吧:
- 路由方不方便
- 中间件支持如何,开发方便不
- 错误处理如何
- 环境变量
- orm 支持
- 看看有没有 demo 来看下项目结构,好的项目结构后面维护的时候会很方便
Goframe 这个框架在接口这一层很难写单元测试。在做框架选型的时候要考虑一下有没有容易写单元测试的。
你还是学生在学习阶段,没用在具体项目上,为啥直接用框架呢?不如从网络开始呢,标准库那么强大,值得学习一下。
试试 fiber 吧,gin 的路由中间件不错但 codec 不太行,beego 不推荐
go fiber
gin
我选择了 Gin ,看一会文档就会使用了。
不推荐使用 bee go 和 gf 这种框架
架构还是得自己搞,适合自己的最好,大包大揽的框架里有时候想实现某些东西的时候会非常非常别扭
想要上手快 文档全 API 直观的肯定是 gin 了
不想太折腾,选 Gin 会好一些。
个人几年前随机选了 echo ,也还行吧,一直用到现在。但生态差很多,很多第三库没人维护,遇到 bug 需要自己去解决。
1l 说完了,gin echo iris 之类的都差不多,用一个之后其他的基本就会了,我一直用的 echo
学生的话,建议先直接用 net 标准库,然后再用这些框架。
Hertz 比较好
go fiber
gofiber 从维护积极性、文档组件齐全程度、易用度、qps 性能、硬件资源消耗五边图来看,应该是个五边形战士
gin 用的人多,star 最多,但是性能属于中等级别
感觉性能开销其实对于比较重的业务来说差异不是很大,最好选一个生态比较完善的框架,其他框架不太了解,gin 使用下来大部分 middleware 都有现成的,社区讨论的人也挺多,google 找问题好找。
其他框架也可以分析一下看看,我觉得框架主要在于我能随时找到我要的组件并集成进来,有问题能找到解决方案,就比较满意了。
gin
试试 fiber 吧,gin 的路由中间件不错但 codec 不太行,beego 不推荐
echo
kitex
net/http
fiber +1
我用的 Hertz
用 :param 作为路径参数的我都不考虑
首先排除 gf
现在 Beego 还能上比较吗
推荐我厂的 Hertz
没遇到什么坑
至少内外部同源的,内部的包只是加了一些内部基建的适配,套了个壳,底层还是 import 了 GitHub 上面的包
go fiber ,现在就在用 fiber + nextjs 写一个自己的玩具项目,遇到问题的时候,查询 fiber 的文档都有解释。
go zero 有人用么?
https://go-zero.dev/cn/
yiigo + chi
#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
go-zero
谢谢…这个方法对我来说,太繁琐了…我找了一个简单粗暴的办法…
#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
在选择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则提供了更全面的解决方案。