Web

介绍

GoGoWeb

流行度

按照流行度排行(根据 GitHub Star 数量)


学习曲线


astaxiekataras 分别为 BeegoIris 做了超棒的工作,希望其他的框架也能迎头赶上,为开发者提供更多的例子。至少对于我来说,如果我要切换到一个新的框架,那些例子就是最丰富的资源,来获取尽可能多的有用信息。一个实例胜千言啊。

核心功能

根据功能支持的多寡排行
GoWebWebGonet/http

技术性词汇

路由:命名的路径参数和通配符

可以处理动态的路径。 命名的路径参数例子:

username"me""speedwheel"
path"some/path/here""this/is/a/dynamic/multi/level/path"
macros/user/{username:string}/user/{username:int min(1)}

路由:正则表达式

过滤动态的路径。 例如:

id42

路由:分组

通过共用逻辑或中间件来处理有共同前缀的路径组。 例如:

  • /user
  • /user/profile
  • /user/signup 你甚至可以从一个组中创建子分组:
  • /user/messages/{id}

路由:上述所有规则相结合而没有冲突

WebGo/{path *wildcard}/user/{username}/user/static/user/{path *wildcard}/user/static/{path *wildcard}

路由:自定义 HTTP 错误

Http>=400NotFound 404
Web404405500Iris,Beego 和 Revelany errorany error

100% 兼容 net/http

这意味著:

*http.Requesthttp.ResponseWriternet/http

中间件生态系统

UseDone

类 Sinatra 的 API 设计(译者注:Sinatra 是一门基于 Ruby 的领域专属语言)

可以在运行时中注入代码来处理特定的 HTTP 方法 (以及路径参数)。 例如:

服务器程序:默认启用 HTTPS

SSLSSL/TLShttpshttps

服务器程序:平滑关闭(Gracefully Shutdown)

CTRL + C

服务器程序:多重监听

net.Listener

完全支持 HTTP/2

httpsHTTP/2Push

子域名

Web辅助功能(secondary)

会话(Sessions)

支持 http sessions,且可以在自定义的处理程序中使用 sessions。

  • 有一些 Web 框架支持后台数据库来储存 sessions,以便在服务器重启之后仍旧能获得持久的 sessions。
  • Buffalo 使用 ,它比其他框架的实现略微慢了一点。 例如:

Wiki:

网络套接字(Websockets)

websocketwebsocketwebsocket

程序内嵌对视图(又名模版)的支持

[]byte

什么是视图引擎

框架支持模版加载、自定义及内建模版功能,以此来节省我们的开发时间。

视图引擎:STD

html/template

视图引擎:Pug

Pug

视图引擎:Django

Django

视图引擎:Handlebars

Handlebars

视图引擎:Amber

Amber

渲染:Markdown, JSON, JSONP, XML...

框架提供一个简单的方法来发送和自定义各种内容类型的响应。

MVC

Model–view–controller (MVC) 模型是一种用于在计算机上实现用户界面的软件架构模式,它将一个应用程序分为互相关联的三部分。这样做的目的是为了:将信息的内部处理逻辑、信息呈现给用户以及从用户获取信息三者分离。MVC 设计模式将这三个组件解耦合,从而实现高效的代码复用和并行开发。

  • Iris 支持完备的 MVC 功能, 可以在运行时中注入。
  • Beego 仅支持方法和数据模型的匹配,可以在运行时中注入。
  • Revel 支持方法,路径和数据模型的匹配,只可以通过生成器注入(生成器是另外一个不同的软件用于构建你的 Web 应用)。 Wiki:

缓存

WebhttpHTMLWebWeb

文件服务器

可以注册一个(物理的)目录到一个路径,使得这个路径下的文件可以自动地提供给客户端。

文件服务器:内嵌入应用

assetsCSSJavaScript[]byte

响应可以在发送前的生命周期中被多次修改

http_contextresponse writerbodyheadersnet/http

Gzip

response writergzipgzip
gzip

测试框架

HTTP
myIrisApp/adminGET"name""pass"GET/adminStatus OK"welcome"

TypeScript 转译器

TypeScriptES6TypeScriptTypeScriptES6ES5ES3 JavaScript

在线编辑器

在在线编辑器的帮助下,你可以快速轻松地在线编译和运行代码。

日志系统

自定义日志系统通过提供有用的功能,如彩色日志输出、格式化、日志级别分离及不同的日志记录后端等,来扩展原生日志包。

维护和自动更新

以非侵入的方式通知框架的用户即时更新。

再见!

谢谢你的阅读,如果你喜欢这篇文章,请用表情符号和我互动哦 :)

译者:

校对:

本文由 原创编译, 荣誉推出

欢迎关注Go语言中文网公众号: