加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 移动 > 正文

Golang六款优秀Web框架对比

发布时间:2019-10-16 21:17:03 所属栏目:移动 来源:云时代的运维开发
导读:副标题#e# Golang是一门快速增长的语言,专为构建简单、快速且可靠的软件而设计。它提供的net/http库对于HTTP协议实现非常好,基于此再构造框架会更容易,因此生态中出现了很多框架。本文将从流行度、社区支持及内建功能等角度对六款知名Go语言Web框架做对

类Sinatra风格API 可以在运行时中注入代码来处理特定的 HTTP 方法(以及路径参数)

  1. .Get or GET("/path", gethandler) 
  2.  .Post or POST("/path", postHandler) 
  3.  .Put or PUT("/path", putHandler) and etc. 

服务器程序: 自动启用HTTPS 框架的服务器支持注册及自动更新SSL证书来管理新传入的SSL/TLS连接(https)

服务器程序: 优雅关闭 当按下CTRL+C关闭终端应用程序时,服务器将等待(特定的超时时间)其他的连接完成相关任务或触发一个自定义事件来做清理工作(比如: 关闭数据库),最后优雅的终止服务

服务器程序: 多重监听 框架的服务器支持自定义的net.Listener或使用多个http服务器和地址为web应用程序提供服务

完全支持HTTP/2 框架可以很好的处理https请求的http/2协议,并支持服务器push功能子域名 可以直接在Web应用中注入子域名的路径

  • 辅助功能 意味着这个功能并不被这个框架原生支持,但是你仍旧可以通过启用多个 http 服务器来实现。缺点在于:主程序和子域名程序之间并不是连通的,默认情况下,它们不能共享逻辑

会话(Sessions) 支持HTTP Sessions,且可以在自定义的handlers中使用sessions

  • 一些 Web 框架支持后台数据库来储存 sessions,以便在服务器重启之后仍旧能获得持久的 sessions
  • Buffalo 使用 gorilla 的 sessions 库,它比其他框架的实现略微慢了一点
  1. func setValue(context http_context){ 
  2.  s := Sessions.New(http_context) 
  3.  s.Set("key", "my value") 
  4.  } 
  5.  func getValue(context http_context){ 
  6.  s := Sessions.New(http_context) 
  7.  myValue := s.Get("key") 
  8.  } 
  9.  func logoutHandler(context http_context){ 
  10.  Sessions.Destroy(http_context) 
  11.  } 

Websockets 支持websocket通信协议,不同框架有不同的实现方式,其中Iris实现了websocket最多功能并提供了相对更容易使用的API

程序内嵌对视图(模版)的支持 通常情况下,你必须根据 Web 应用的可执行文件一一对应地转换模版文件。内嵌到应用中意味着这个框架集成了 go-bindata ,因此在最终的可执行文件中可以以 []byte 的形式将模版包含进来

视图引擎 框架支持模版加载、自定义及内建模版功能,节省开发时间

视图引擎: STD 框架支持通过标准的 html/template 解析器加载模版

视图引擎: Pug 框架支持通过 Pug 解析器加载模版

视图引擎: Django 框架支持通过 Django 解析器加载模版

视图引擎: Handlebars 框架支持通过 Handlebars 解析器加载模版

视图引擎: Amber 框架支持通过 Amber 解析器加载模版

渲染: Markdown, JSON, JSONP, XML... 框架提供一个简单的方法来发送和自定义各种内容类型的响应

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读