为了账号安全,请及时绑定邮箱和手机立即绑定

在Go语言中我为什么选择Iris web框架?

标签:
Go

最近有同学提到gin和echo,那我来阐述一下我为什么选择Iris golang web框架的原因,先说说我的观点,先不管Iris是不是全宇宙最快的框架,但iris为了优化性能,不惜自己开发和集成最快的组件,比如日志记录内置了golog模块,比如json序列化就选择了第三方库jsoniter,从框架设计的态度上,我必须给个赞👍。

其次Iris是社区驱动的Go语言Web 框架,支持http2,完备 MVC 支持。虽然有点夸张,但iris的确是一个非常优秀的开源web框架,因为优秀,所以选择iris的原因很多,首当其冲的就是他的性能非常卓越,在众多web框架中遥遥领先,感兴趣的同学可以到官网看看基准测试,也可以下载源代码自己跑一下基准测试。另外iris提供的api都是极简风格,很容易上手。第三就是iris强大web功能,支持中间件扩展,并有丰富的中间件生态库。强大的路由功能,可以轻易的构建各种形式的RESTful API,路由分组、静态路由、动态路径参数化、通配符路由等待。还有http错误定义、上下文处理器、身份验证、视图模板、热重启、Websocket支持等等功能,就不一一说了,感兴趣的同学可以到官网一看。选择iris绝对不会错的,放心听我的,使用过程中还会发现一些惊喜的功能。总结下来就是如下几点:

  • 性能卓越
  • 功能时尚
  • 极简主义风格
  • 社区驱动
  • 第三方扩展中间件生态

选择一个开源框架除了性能和特性之外,还要考虑社区活跃度和文档支持。

我本来想做个Golang web框架的比较,却发现已近有人做了详细的对比。

先放上官网对几个主要的go web框架性能比较的截图,也可以点击链接前往查看https://github.com/kataras/iris#third-party

https://img1.sycdn.imooc.com//5ccf8e1e00011d8c09160300.jpg

这个链接也是官网对各种语言的各种web框架做的一个基准测试,内容比较多,点击链接前往查看:

下面就是我说的前人已经做的详细对比,在githu上整理了帅气的优秀golangweb框架和特性比较,点击链接前往查看原文:

下面是翻译稿,出处是https://studyiris.com

下面是摘录的核心特征的比较表格:

Core Features

Sorted by the most to less featured

Name Iris Beego Revel Echo Gin Buffalo
Router: Named Path Parameters & Wildcard* 2714.png 2714.png 2714.png 2714.png 2714.png 2714.png-
Router: Regex* 2714.png 2714.png 2796.png 2796.png 2796.png 2714.png-
Router: Grouping* 2714.png 2714.png 2714.png 2714.png-
Router: All the above Mixed Without Conflict* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Router: Custom HTTP Errors* 2714.png 2714.png 2714.png 2714.png 2796.png 2714.png
100% compatible with net/http* 2714.png 2796.png 2796.png 2714.png 2714.png
Middleware ecosystem* 2714.png 2714.png 2796.png 2714.png 2714.png 2796.png
Sinatra-like API* 2714.png 2714.png 2796.png 2714.png 2714.png 2796.png
Server: Automatic HTTPS* 2714.png 2796.png 2714.png 2796.png 2796.png
Server: Gracefully Shutdown* 2714.png 2714.png 2714.png 2796.png 2796.png 2796.png
Server: Multi Listeners* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Full HTTP/2* 2714.png 2714.png standard standard
Subdomains* 2714.png secondary secondary secondary secondary secondary
Sessions* 2714.png 2714.png 2714.png 2796.png 2796.png secondary
Websockets* 2714.png 2714.png 2714.png 2796.png 2796.png 2796.png
View (aka Templates) Embedded Into App* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
View Engine: STD* 2714.png 2714.png 2714.png 2714.png 2714.png 2796.png
View Engine: Pug* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
View Engine: Django* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
View Engine: Handlebars* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
View Engine: Amber* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Renderer: Markdown, JSON, JSONP, XML…* 2714.png 2714.png 2714.png 2714.png 2714.png 2796.png
MVC* 2714.png 2714.png- generator 2796.png 2796.png 2796.png
Caching* 2714.png 2714.png 2714.png 2796.png 2796.png 2796.png
File Server* 2714.png 2714.png 2714.png 2714.png 2714.png 2714.png
File Server: Embedded Into App* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Response can be Modified Many times through lifecycle before sent* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Gzip* 2714.png 2714.png 2714.png middleware middleware middleware
Testing Framework* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Typescript Transpiler* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Online Editor* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Logging System* 2714.png 2714.png 2714.png 2714.png- 2714.png- 2796.png
Maintenance & Auto-Updates* 2714.png 2796.png 2796.png 2796.png 2796.png 2796.png
Performance ★★★★★ ★★★ ★★ ★★★★★ ★★★★★ ★★★
点击查看更多内容
9人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
223
获赞与收藏
302

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消