已经有不少优秀开源的 go 开发框架或脚手架,我为什么重新造轮子做了一个 go 开发框架。

156 天前
 gvison

使用 go 开发项目多年,了解和使用过不少 go 框架,例如 web 框架有 gin 、echo 、fiber 、iris 、beego 等,微服务框架有 grpc 、go-micro 、kratos 、go-zero 等,无论是 web 框架或微服务框架,当深入了解使用一个框架之后,同类的框架都比较容易上手使用。

开发一个完整后端服务通常不止只有框架代码,还有 API 设计、数据库、测试、文档、配置、部署和监控等等,如果经常使用 gin 开发 web 服务都知道,由于 gin 过于轻量简洁,从 0 开始搭建一个完整的 web 后端服务还是过于麻烦,需要像搭积木一样拼接成完整的后端服务,达不到预想的一键创建一整套完整的后端服务代码。而使用微服务框架可以创建一整套目录结构代码,还有包含了配置、api 文档、部署和监控等。而在根据多种类型数据的表生成 CRUD api 方面没怎么支持(这不是微服务框架需要考虑的,毕竟使用什么数据库和 orm 由使用者决定)。如果开发一个业务相对简单的 web 服务,通常又不会使用微服务框架。

我实现一个从项目层级的开发框架目的是能够把以往开发项目经验固化下来,这对于提升个人开发技术水平和解决问题能力具有极大的帮助,从项目层面思考和设计架构,并将其经验应用于其他项目开发中,方便自己和也方便团队开发,在团队协作中使用统一的开发框架可以提高代码的一致性和可维护性,如果团队成员对现有框架有不同的意见和建议,则可能导致沟通成本上升。

注:这里的项目层级的开发框架是指一键创建包含了 web 或 grpc 框架、常用中间件或拦截器、API 、配置、orm 、测试、文档、部署和监控等等,大多情况只需关心编写业务逻辑代码。理论上从项目层级看,越往项目层设计的开发框架,可以做到自动化会越高,而 web 框架或微服务框架从框架层级设计,自动化程度没那么高,当然可以在框架层级基础上转换到项目层级设计。

实现的在项目层级的 go 开发框架 sponge 没有从 0 开始,而是选择在 gin 和 grpc 两个基础上设计,因为这两个框架都是比较轻量级,可以定制化程度更高。

sponge 主要特点:

GitHub 地址: https://github.com/zhufuyi/sponge

优秀的开发框架或脚手架有很多,选择适合自己或团队来解决实际问题就是好的选择。

3570 次点击
所在节点    Go 编程语言
14 条回复
kk2syc
156 天前
已经有不少优秀开源的 go 开发框架或脚手架,我为什么重新造轮子做了一个 go 开发框架?

> 闲的
sumu
156 天前
在用 GoFrame ,只要看下文档,就明白在 go 开发框架这块,这个已经到顶了。
另外,gf 脚手架很好用
leetom
156 天前
@sumu 看着功能非常全,不知道用的人多不多,有没有坑
dbpe
156 天前
不知道为什么..我在国内看到最多的开源项目就是相关业务的...
dododada
156 天前
@dbpe 因为研发类的不产生效益的开源,要很多很多钱
diagnostics
156 天前
@dbpe

三个词:简单、门槛低、可以借鉴

国内研发类的岗位极其少,大部分都是 CRUD ,他们能接触和想到的也只有这些;
基础研发类的岗位,大多数是 XX 项目的维护人或贡献者(公司招聘他们的目的也主要是这个),他们本身就为大型开源项目开发了(忙得要死,压根没时间造轮子)
大多数都是练手开源、小部分是在内部也干这样的事情,然后搬到开源上来
从公司内孵化而来(和上面有点重复,类似于 Kafka 不是从 Linkined 里面孵化,doris 从百度孵化),中小公司一般只能孵化出业务封装框架(降低成本的角度)要写一个难的,可能没这个资源(没人才、没精力)
nnd
156 天前
@sumu #2 代码风格非常 PHP, 不够 Go Native
lveye
155 天前
其实造轮子可以让开发真正理解清楚技术的实现原理,造些轮子可以技术成长的更快些
mocococ
155 天前
感觉好复杂.. 不如看看 goframe ,感觉 goframe 的设计真的不错~ 不管大到微服务开发、 项目结构、单体、多 app ,还是小到缓存处理、orm 、各种类型、系统工具。

OP 要不参考参考..
mocococ
155 天前
@leetom 很不错~ 自从学 golang 以来 发现最稳的一个了
sumu
155 天前
@leetom 有没有坑不知道,用了一年,没碰到问题。印象最深刻是中间接入 opentelemetry ,框架在 ctx 传递这块做得很棒,文档示例清晰,半天接完,比某些大厂做的框架,不知道高到哪儿去了。

要感谢 V 站,一年前我在做 Go 框架选型时,选型侧重点是脚手架与文档,因为这个对于开发效率影响太大了,脚手架功能越强大,后期迭代效率越高,但都不太满意,本来准备用 gin 了,自己写几个小工具做脚手架,有一个框架撕逼贴,有人推荐 GoFrame ,从未耳闻过,我抱着试一试的想法,结果大为惊艳,从来没见过这么强大的脚手架,gf gen dao ,这个也能有?之前都是 goorm 手动生成的,gf gen ctrl 这个也可以?正是我要的! go gen service 这是什么鬼?这个用法太奇怪了吧,习惯后,真香。在看文档,妈呀,这是能免费享受的么。

希望也能帮到其他看到帖子的程序员。
qloog
155 天前
框架太多,玩转一个就行,多的学不过来😔,所以我只玩我熟悉的: https://github.com/go-eagle/eagle
gvison
154 天前
@mocococ 觉得复杂可以尝试下在这里体验生成代码 https://go-sponge.com/ui/web-http 。浏览了下 goframe 的代码和文档,goframe 有的大部分功能 sponge 也是有的,开源的开发框架趋同化,个人感觉 goframe 主要更侧重 web 开发,在微服务方面没有微服务框架(go-zero 、kratos 等)成熟,个人更喜欢 kratos ,因此 sponge 参考了一些 kratos 。
lllsj
154 天前
发现竟然很早以前就 star 过了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1059001

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX