Google的Go语言(又名Golang)已成为编写网络服务和API强有力的选择。它可以编译成快速运行的原生代码,天生支持异步编程,还拥有广泛和不断扩大的用户群 下面列出了网络开发中用到的Go语言的主要框架。一些框架旨在简化用户的使用,如API访问点等。还有一些主要是为了处理全面的网站开发,或者可以根据工作需要的组件扩张或缩减开发

Go Web主流框架

框架 地址 描述
Gin https://github.com/gin-gonic/gin
https://gin-gonic.github.io/gin
Go 语言编写的 Web 框架,以更好的性能实现类似 Martini 框架的 API
Beego https://github.com/astaxie/beego
https://beego.me
开源的高性能 Go 语言 Web 框架
Iris https://github.com/kataras/iris
https://iris-go.com/start/
https://www.studyiris.com/
全宇宙最快的 Go 语言 Web 框架。完备 MVC 支持,未来尽在掌握
Echo https://github.com/labstack/echo
https://echo.labstack.com
简约的高性能 Go 语言 Web 框架
Revel https://github.com/revel/revel
https://revel.github.io
Go 语言的高效、全栈 Web 框架
Buffalo https://github.com/gobuffalo/buffalo
https://gobuffalo.io
使用 Go 语言快速构建 Web 应用

Popularity 人气

Name Stars Forks Issues Open Issues Closed Birth Year Author
Gin 40,181 4,735 243 1184 2014 @manucorporat
Beego 24,612 4,984 741 2021 2012 @astaxie
Iris 18,565 2,106 23 569 2016 @kataras
Echo 17,861 1,641 30 1000 2015 @vishr
Revel 11,823 1,402 77 806 2011 @revel
Buffalo 5,835 450 63 599 2014 @markbates

学习曲线

Name Examples Reference Real time support
Iris 92 https://github.com/kataras/iris/tree/master rocket chat
Beego 49 https://beego.me/docs
Echo 20 https://echo.labstack.com/cookbook/hello-world
Gin 15 https://github.com/gin-gonic/gin#installation gitter
Revel 6 http://revel.github.io/examples/index.html gitter
Buffalo 6 https://gobuffalo.io/docs/installation slack

核心功能

按功能从高到低排序

Name Iris Beego Revel Echo Gin Buffalo
Router: Named Path Parameters & Wildcard* Go Web应用开发框架 - 图1 Go Web应用开发框架 - 图2 Go Web应用开发框架 - 图3 Go Web应用开发框架 - 图4 Go Web应用开发框架 - 图5 Go Web应用开发框架 - 图6-
Router: Regex* Go Web应用开发框架 - 图7 Go Web应用开发框架 - 图8 Go Web应用开发框架 - 图9 Go Web应用开发框架 - 图10 Go Web应用开发框架 - 图11 Go Web应用开发框架 - 图12-
Router: Grouping* Go Web应用开发框架 - 图13 Go Web应用开发框架 - 图14 Go Web应用开发框架 - 图15 Go Web应用开发框架 - 图16-
Router: All the above Mixed Without Conflict* Go Web应用开发框架 - 图17 Go Web应用开发框架 - 图18 Go Web应用开发框架 - 图19 Go Web应用开发框架 - 图20 Go Web应用开发框架 - 图21 Go Web应用开发框架 - 图22
Router: Custom HTTP Errors* Go Web应用开发框架 - 图23 Go Web应用开发框架 - 图24 Go Web应用开发框架 - 图25 Go Web应用开发框架 - 图26 Go Web应用开发框架 - 图27 Go Web应用开发框架 - 图28
100% compatible with net/http* Go Web应用开发框架 - 图29 Go Web应用开发框架 - 图30 Go Web应用开发框架 - 图31 Go Web应用开发框架 - 图32 Go Web应用开发框架 - 图33
Middleware ecosystem* Go Web应用开发框架 - 图34 Go Web应用开发框架 - 图35 Go Web应用开发框架 - 图36 Go Web应用开发框架 - 图37 Go Web应用开发框架 - 图38 Go Web应用开发框架 - 图39
Sinatra-like API* Go Web应用开发框架 - 图40 Go Web应用开发框架 - 图41 Go Web应用开发框架 - 图42 Go Web应用开发框架 - 图43 Go Web应用开发框架 - 图44 Go Web应用开发框架 - 图45
Server: Automatic HTTPS* Go Web应用开发框架 - 图46 Go Web应用开发框架 - 图47 Go Web应用开发框架 - 图48 Go Web应用开发框架 - 图49 Go Web应用开发框架 - 图50
Server: Gracefully Shutdown* Go Web应用开发框架 - 图51 Go Web应用开发框架 - 图52 Go Web应用开发框架 - 图53 Go Web应用开发框架 - 图54 Go Web应用开发框架 - 图55 Go Web应用开发框架 - 图56
Server: Multi Listeners* Go Web应用开发框架 - 图57 Go Web应用开发框架 - 图58 Go Web应用开发框架 - 图59 Go Web应用开发框架 - 图60 Go Web应用开发框架 - 图61 Go Web应用开发框架 - 图62
Full HTTP/2* Go Web应用开发框架 - 图63 Go Web应用开发框架 - 图64 standard standard
Subdomains* Go Web应用开发框架 - 图65 secondary secondary secondary secondary secondary
Sessions* Go Web应用开发框架 - 图66 Go Web应用开发框架 - 图67 Go Web应用开发框架 - 图68 Go Web应用开发框架 - 图69 Go Web应用开发框架 - 图70 secondary
Websockets* Go Web应用开发框架 - 图71 Go Web应用开发框架 - 图72 Go Web应用开发框架 - 图73 Go Web应用开发框架 - 图74 Go Web应用开发框架 - 图75 Go Web应用开发框架 - 图76
View (aka Templates) Embedded Into App* Go Web应用开发框架 - 图77 Go Web应用开发框架 - 图78 Go Web应用开发框架 - 图79 Go Web应用开发框架 - 图80 Go Web应用开发框架 - 图81 Go Web应用开发框架 - 图82
View Engine: STD* Go Web应用开发框架 - 图83 Go Web应用开发框架 - 图84 Go Web应用开发框架 - 图85 Go Web应用开发框架 - 图86 Go Web应用开发框架 - 图87 Go Web应用开发框架 - 图88
View Engine: Pug* Go Web应用开发框架 - 图89 Go Web应用开发框架 - 图90 Go Web应用开发框架 - 图91 Go Web应用开发框架 - 图92 Go Web应用开发框架 - 图93 Go Web应用开发框架 - 图94
View Engine: Django* Go Web应用开发框架 - 图95 Go Web应用开发框架 - 图96 Go Web应用开发框架 - 图97 Go Web应用开发框架 - 图98 Go Web应用开发框架 - 图99 Go Web应用开发框架 - 图100
View Engine: Handlebars* Go Web应用开发框架 - 图101 Go Web应用开发框架 - 图102 Go Web应用开发框架 - 图103 Go Web应用开发框架 - 图104 Go Web应用开发框架 - 图105 Go Web应用开发框架 - 图106
View Engine: Amber* Go Web应用开发框架 - 图107 Go Web应用开发框架 - 图108 Go Web应用开发框架 - 图109 Go Web应用开发框架 - 图110 Go Web应用开发框架 - 图111 Go Web应用开发框架 - 图112
Renderer: Markdown, JSON, JSONP, XML…* Go Web应用开发框架 - 图113 Go Web应用开发框架 - 图114 Go Web应用开发框架 - 图115 Go Web应用开发框架 - 图116 Go Web应用开发框架 - 图117 Go Web应用开发框架 - 图118
MVC* Go Web应用开发框架 - 图119 Go Web应用开发框架 - 图120- generator Go Web应用开发框架 - 图121 Go Web应用开发框架 - 图122 Go Web应用开发框架 - 图123
Caching* Go Web应用开发框架 - 图124 Go Web应用开发框架 - 图125 Go Web应用开发框架 - 图126 Go Web应用开发框架 - 图127 Go Web应用开发框架 - 图128 Go Web应用开发框架 - 图129
File Server* Go Web应用开发框架 - 图130 Go Web应用开发框架 - 图131 Go Web应用开发框架 - 图132 Go Web应用开发框架 - 图133 Go Web应用开发框架 - 图134 Go Web应用开发框架 - 图135
File Server: Embedded Into App* Go Web应用开发框架 - 图136 Go Web应用开发框架 - 图137 Go Web应用开发框架 - 图138 Go Web应用开发框架 - 图139 Go Web应用开发框架 - 图140 Go Web应用开发框架 - 图141
Response can be Modified Many times through lifecycle before sent* Go Web应用开发框架 - 图142 Go Web应用开发框架 - 图143 Go Web应用开发框架 - 图144 Go Web应用开发框架 - 图145 Go Web应用开发框架 - 图146 Go Web应用开发框架 - 图147
Gzip* Go Web应用开发框架 - 图148 Go Web应用开发框架 - 图149 Go Web应用开发框架 - 图150 middleware middleware middleware
Testing Framework* Go Web应用开发框架 - 图151 Go Web应用开发框架 - 图152 Go Web应用开发框架 - 图153 Go Web应用开发框架 - 图154 Go Web应用开发框架 - 图155 Go Web应用开发框架 - 图156
Typescript Transpiler* Go Web应用开发框架 - 图157 Go Web应用开发框架 - 图158 Go Web应用开发框架 - 图159 Go Web应用开发框架 - 图160 Go Web应用开发框架 - 图161 Go Web应用开发框架 - 图162
Online Editor* Go Web应用开发框架 - 图163 Go Web应用开发框架 - 图164 Go Web应用开发框架 - 图165 Go Web应用开发框架 - 图166 Go Web应用开发框架 - 图167 Go Web应用开发框架 - 图168
Logging System* Go Web应用开发框架 - 图169 Go Web应用开发框架 - 图170 Go Web应用开发框架 - 图171 Go Web应用开发框架 - 图172- Go Web应用开发框架 - 图173- Go Web应用开发框架 - 图174
Maintenance & Auto-Updates* Go Web应用开发框架 - 图175 Go Web应用开发框架 - 图176 Go Web应用开发框架 - 图177 Go Web应用开发框架 - 图178 Go Web应用开发框架 - 图179 Go Web应用开发框架 - 图180
Performance ★★★★★ ★★★ ★★ ★★★★★ ★★★★★ ★★★

Go中最著名的“Web框架”并不是真正的框架,也就是说:Echo、Gin和Bufflo不是真正的(完整功能的)Web框架。但是Go社区的大多数人认为它们是。他们认为它们可以和Iris、Beego或Revel相比较。因此,我们有义务将它们也包括在这个列表中 除了Beego和Revel之外,上述所有框架都可以适应任何为net/http创建的中间件。有些框架很容易,有些需要些编码(即使有点痛苦也是一个选择)

Gin

Go的第一个Web开发框架是Martini,但这个项目已经停止了维护。然而,其他Go框架如雨后春笋般纷纷涌现,它们使用Martini的基本思想,但是具有更好的性能和更多的功能
Gin就是其中的一个项目。它使用修改过的的httprouter软件包来提高速度,并为很多常见的场景提供处理程序,包括中间件、文件上传、日志、将前端HTML组件绑定到后台的数据结构等等。其稳定版API是1.x版本,所以未来的变更应该不会破坏现有的Gin应用

Beego

在某些方面,Beego会让人联想到Python中包罗万象的Django Web框架。它具备各种Web应用程序的通用功能,总共有八个模块,你可以根据需要选择使用。除了大多数Web框架中常见的模型-视图-控制器(model-view-controller,MVC)组件外,它还包括访问数据库的对象关系映射(object-relationship map,ORM)、内置缓存处理程序、会话处理工具、日志记录机制和常用的操作HTTP对象的库
Beego还有一个与Django很相似的地方是它的命令行工具。例如,你可以使用bee从头创建Beego应用或管理现有的应用

Iris

Iris的创建者称其为“真正属于Go的Express.js”,也就是说, 它是 Node.js 的Web框架的Go语言版,它使用最小设计,绝大部分功能都由插件提供。Iris提供基本的MVC功能,自带对中间件、会话、路由和缓存的支持
文档包含很多Iris的示例,包括与React前端的交互,或在Docker/Kubernetes环境中运行的项目

Echo

Echo是另一个小框架,主要面向API。例如,它并没有提供模板系统,所以你可以根据需要使用Go自己的html/template。但是,Echo提供了几种常常用于API的中间件模块,例如基本的认证和密钥身份验证、压缩、代理和日志记录
Echo还提供了大量实用的recipe,其中很多无需大费周折就能实现。例如,如果你想使用Let’s Encrypt来管理HTTPS证书,那么可以设置一种recipe来自动安装这些证书

Revel

Ruby on Rails为MVC风格的Web框架提供了一个通用模式,许多其他语言都仿照Ruby on Rails实现了自己的框架。Revel的创建者将其视作Rails的灵魂
除了提供基本的MVC,Revel还允许你自由使用其他组件来满足其他需求。你可以使用Go自己的原生html/template包,或自己提供。同样,对于HTTP引擎,你也可以使用Go自己的或第三方提供的。缓存可以在本地的内容中完成,也可以通过Memcached或Redis在后台完成。但是,该框架没有数据库的原生ORM。Revel文档的一个例子(https://revel.github.io/examples/booking.html)中使用了Gorp库,但理论上来说你可以使用任何Go ORM

Gorilla

Gorilla的定位是“Web工具箱”,而并非MVC风格的框架。它提供的库可以帮忙解决Web服务编程中各种底层的问题,包括context(在请求期间保存状态)、mux(路由和调度),以及实现HTTP上的安全cookie、会话、websocket和RPC等功能
Gorilla没有提供模板、表单和其他前端部分。你需要自己准备这些部分,你可以在其他框架中使用Gorilla的各个组件,或是在独立组件中集成用Gorilla编写的东西