Golang Go语言中 目前最好的 Web 框架和 ORM 库是?

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

Golang Go语言中 目前最好的 Web 框架和 ORM 库是?


GinEcho 哪个更好?


89 回复

gin 除了不支持路由命名以外暂时找不到其他缺点了
除了 gorm 还有其他更好的选择?

更多关于Golang Go语言中 目前最好的 Web 框架和 ORM 库是?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


更喜欢 Echo, better API.

歪楼求问,就框架而言 iris 怎么样啊

哪有最好,我用的 iris,功能全面,速度不输 gin

然后是 xorm

借地推销一下我写的 sqlingo
https://github.com/lqs/sqlingo

XORM 貌似不支持 Associations 啊。

用 gin 的飘过~ 暂时没有#1 说的那些需求,所以没感觉到明显的缺点
同也是用的 gorm

Iris 的模型绑定功能不如 gin 的方便。

试试 facebooke 开源的 ORM 框架 ent: https://github.com/facebookincubator/ent

感谢,之前一直不知道这个。

gorm 不支持批量插入,好难受。。。

gin,路由用 gorilla/mux
gorm

Iris 弄跨域太麻烦了

批量插入有解决方案的

你们都用 gin 写什么呀

老哥,gin 有没有可分享的项目源码 参考一下

没有,都是公司项目

有个印尼人写的 rel 库看着还不错!

go-chi/chi + jmoiron/sqlx

主流都是 gin + gorm

补充一个,如果不考虑性能,我会选择 martini

不喜欢 ORM,轻量级的 sqlx 足矣。
或者 sqlx 的轻量级封装: https://github.com/ilibs/gosql
目前感觉良好

呵呵,一看你就经常逛 reddit:/r/golang

开始用的 gin,后来自己参考了一堆,自己搭了一个,主要是自己扩展起来方便,orm 就用了 gorm




gin 写的博客! 也就是简单的 curd!
gin 封装的包,供上面的博客所用!

博客地址: https://www.iphpt.com/
代码是开源!

orm 用的 xorm!

我个人用过 xorm 和 gorm 还有 beego 自带的 orm

orm,相比 gorm 这类 code-first 的方案,更喜欢 sqlboiler 这种 database-first code-generation 方案

gorm 还行,虽然有时候有奇奇怪怪的预定义值

gin 有路由冲突还有上下文是个结构,不能扩充更多功能,echo 就没这些问题,不过开发不太活跃

写很复杂条件的 sql,我还是喜欢类 mybatis 这种,目前找到的就 xormplus

https://tech.crandom.com/post/2017/echo-error/

这是我早年从 gin 转到 echo 的原因,就因为 echo 多了个这。
不知道现在 gin 的错误处理有没有更灵活。

gorm 现在比以前也好很多了。前几天试了一下,slice of struct 类型的列表数据,preload 时它会自动用 in 关键字,只会出来俩 sql,早年的时候有 n 行就有 n+1 个 sql,导致很好的 preload 功能在返回列表时没发用。现在很方便的。 就是写 join 还是不那么方便。

正所谓框架肯定要是框架不能是库,当然推荐GoFrame https://goframe.org/

GF(Go Frame)是一款模块化、高性能、生产级的 Go 基础开发框架。实现了比较完善的基础设施建设,包括常用的核心开发组件, 如:缓存、日志、文件、时间、队列、数组、集合、字符串、定时器、命令行、文件锁、内存锁、对象池、连接池、资源管理、数据校验、数据编码、文件监控、 定时任务、数据库 ORM、TCP/UDP 组件、进程管理 /通信、并发安全容器等等。 并提供了 Web 服务开发的系列核心组件,如:Router、Cookie、Session、Middleware、服务注册、配置管理、模板引擎等等, 支持热重启、热更新、多域名、多端口、多服务、HTTPS、Rewrite 等特性。

GF实现了非常强大的ORM https://goframe.org/database/gdb/index

目前正在用 goframe

看到没人推荐 beego 我就放心了。主流还是 gin+gorm。但是 gin 不像一个真正的 web 框架,小项目用起来挺爽,大项目用起来就感觉缺点什么,作者本身在 issue 里也回应那些要更多更上层 feature 的人说这只是一个微框架而已。gorm 也一样,半年前用的时候对批量操作的支持真的稀烂。所以如果是初入 go 建议这两个都先用用,同时看看一些其他的 framework,然后就会意识到 go 的生态就这样。

Kratos 有用过的吗?

45# beego 咋了。。只写了一个 golang 项目,用的 beego,感觉还行啊。

哇塞! 感谢 学一下去!

web 框架: gin, echo
orm: xorm, grom
个人常用 gin xorm

https://github.com/t-tiger/gorm-bulk-insert 可以用这个库配合 gorm 批量插入哦

语言 or 框架之争 这么多年不都是这样地么… 就跟武侠里面的门派一样, 都说天下第一

自己构建一个语句不就得了

估计要么你还在用老一套的方式管理 golang 的依赖,要么你就没有使用那个注解路由的特性。beego 注解路由在 go mod 是没办法用的,我有修提 pull request,但是很久都没有回复(我猜测是 issue 区国人灌水严重,而且没有稳定的维护团队)。beego 应该已经不怎么活跃了,上次 commit 还是 11 月,所以不怎么推荐了。

真的停止维护了吗, 看来要转 gin 了

应该没有,哪一个 PR 我给他们开发说一下

gin gorm, xorm 只从不在 github 更新后我就放弃了

beego 其实也挺方便的

开始学 go 用一下可以,后面就算了,gin 或者自己用原生都可以,最早我也用过,后来有次有个 bug,提了一直没人回,修没修不清楚了,上次看了下,这个 issue 现在也是没人回,都过了几年了。

我感觉路由命名是很常用的啊,你的应用没有要输出或者跳转内部链接的地方吗?比如没有登录就跳转到 /login

讲道理 gin 不能称为框架吧

那是什么?

个人习惯 gin,ORM/ODM 的话要看是否有多数据库兼容需求。

beego 太重了,又重又罗嗦 beego 可能类似于 ThinkPHP 那种

Go 变成新时代的 PHP 了吗,天天争这些有的没的

RESTful - echo

ORM - gorm or xorm

echo 文档稍好
gorm 比较起来稍好一点

reddit 上几乎只要一提到 iris,立马就会有一场腥风血雨

吃瓜链接[A warning about github.com/kataras/iris]( https://www.reddit.com/r/golang/comments/b481q7/a_warning_about_githubcomkatarasiris/)

有人整理的前因后果[ Why you should not use iris for your Go projects ]( http://www.florinpatan.ro/2016/10/why-you-should-not-use-iris-for-your-go.html)

题外话, 各位有好用的类似 swagger 的 go api 文档生成轮子推荐的吗?

感觉 gorm 和 xorm 都不能算是真正的 ORM

beego bee 工具都不支持 mod,去年就有人提了,但是就是没改动,感觉确实都没啥人维护了

go orm 当然选择 gorose 了, 谁用谁知道

#2 是不是说 Echo 比 gin 更好些 restful api?

不是,是说框架的接口设计得更好,比如集中式的错误处理,用 next 函数显式控制下个中间件的执行,validator 客制化等。

在Golang(Go语言)生态系统中,关于最好的Web框架和ORM库的选择,虽然存在一定主观性,但根据社区的广泛认可度和使用经验,可以给出以下推荐:

Web框架

  • Gin:以其高性能和丰富的功能著称,API设计简洁明了,容易上手,支持中间件和JSON解析,适合快速构建高效的Web应用。
  • Echo:另一个高性能的Web框架,拥有简洁的API和强大的路由功能,内置支持多种模版引擎,适用于需要高吞吐量的应用。
  • Beego:一个全功能的Web框架,提供了ORM、缓存、日志等功能,支持自动化的路由和控制器生成,适合构建复杂的Web应用程序。

ORM库

  • Gorm:Go语言中最流行的ORM库,功能全面且易于使用,支持多种数据库(如MySQL、PostgreSQL、SQLite等),提供了自动迁移、日志记录、事务支持等特性,极大提升了开发效率。

综上所述,对于Web框架,Gin、Echo和Beego都是不错的选择,具体选择哪个取决于项目的需求和开发者的偏好。而对于ORM库,Gorm无疑是Go语言中的佼佼者,值得推荐使用。

回到顶部