阿小信大人的头像
Life is short (You need Python) Bruce Eckel

Golang web框架选型2018-10-17 18:16

老板说要选一个go的web框架来用,所以记录一下选择理由。

go本身就具备了web开发的特性,net/http包+httprouter开发一个apiserver已经足够了,写好包含http.ResponseWriter*http.Request参数的业务处理函数,通过http.HandleFunc注册路由就可以了。

当前流行的框架:结合github关键字go web go web framework搜索和awesome-go中提及的框架,选出了当前比较start数较多且最近一直在更新的框架

按start数排名:gin 21.2k、beego 17.4k、iris 12.1k、echo 11.9k、revel 10.4k

性能上gin、iris、echo网上是给的数据都是五星,beego三星,revel两星。echo最新的测试数据显示它比gin更快一点,gin在编译时可以指定使用jsoniter来处理json,echo不支持,在处理json的服务中,性能猜测是gin更好

在helloworld的写法上gin、iris、echo写法几乎都一模一样,iris从readme看更加花哨,功能要支持的要多一点,但是这些功能个人认为没有也不影响。beego和revel都比较类似于python的django,个人不太喜欢这种较重的框架,学习成本相对较高,而且集成一堆永远用不到的东西。beego是国产,有中文文档;gin的文档几乎是没有,全靠readme;echo有专门的文档网站。

据说iris作者人品不行,用别人代码删license,awesome-go上是被除名的,看了几篇国外博客在比较这些框架是特意指出不要使用iris,这样可能会导致给它贡献代码的人可能会比较少,iris用到的依赖库很多,网上看到很多人在编译的时候遇到这种错误;gin主要是两个大学生写的,主要活跃在寒暑假期间;

以上都是网上说的,自己没有求证过。个人比较喜欢echo和gin这两个框架,都比较轻量,开发快速,拼装能力强。据说echo在路由的报错处理上并不是很友好,有冲突也没有报错,排查困难,中间件不少。gin出错信息详尽,中间件也比较丰富,但是路由匹配有一些限制。

所以根据start数,性能,易用程度,社区活跃度和具体应用场景来选择的话,当前我更加倾向于使用gin作为基础开发框架,可以获得比使用原生包更高的开发效率和执行效率,组织好代码结构,按需加入依赖包即可。

这些框架和原生自带包我都没有实践经历,以上仅凭网上数据和个人喜好做的选择,仅供参考。

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Golang#   阅读[5401] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

网友51.*.*.18[火星]2021-10-23 08:50
网友220.*.*.149[北京]2021-10-23 08:47
网友220.*.*.171[北京]2021-10-23 08:35
网友207.*.*.141[Redmond]2021-10-23 08:34

发表评论