Web
介绍
GoGoWeb
流行度
按照流行度排行(根据 GitHub Star 数量)
学习曲线
astaxie 和 kataras 分别为 Beego 和 Iris 做了超棒的工作,希望其他的框架也能迎头赶上,为开发者提供更多的例子。至少对于我来说,如果我要切换到一个新的框架,那些例子就是最丰富的资源,来获取尽可能多的有用信息。一个实例胜千言啊。
核心功能
根据功能支持的多寡排行
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语言中文网公众号: