69

为什么我坚持用Go语言做Web应用开发框架?

 5 years ago
source link: http://www.10tiao.com/html/236/201806/2650699343/2.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

【CSDN编者按】很多情况下,企业上线或需要快速迭代一款新的产品,但会发现原有的后端框架已不太适用,甚至影响了开发调试速度,那么寻找一种新的开发框架和编程语言变得极为迫切。本篇将揭秘用于创建网站和REST API的最流行、最强力和最全面的Go框架。

Google的Go语言(又名Golang)已成为编写网络服务和API强有力的选择。它可以编译成快速运行的原生代码,天生支持异步编程,还拥有广泛和不断扩大的用户群。

下面列出了网络开发中用到的Go语言的主要框架。一些框架旨在简化用户的使用,如API访问点等。还有一些主要是为了处理全面的网站开发,或者可以根据工作需要的组件扩张或缩减开发。


Go网络开发框架:Beego


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

Beego还有一个与Django很相似的地方是它的命令行工具。例如,你可以使用bee从头创建Beego应用或管理现有的应用。


Go网络开发框架:Gin


Go的第一个Web开发框架是Martini,但这个项目已经停止了维护。然而,其他Go框架如雨后春笋般纷纷涌现,它们使用Martini的基本思想,但是具有更好的性能和更多的功能。

Gin就是其中的一个项目。它使用修改过的的httprouter软件包来提高速度,并为很多常见的场景提供处理程序,包括中间件、文件上传、日志、将前端HTML组件绑定到后台的数据结构等等。其稳定版API是1.x版本,所以未来的变更应该不会破坏现有的Gin应用。


Go Web开发框架:Gorilla


Gorilla的定位是“Web工具箱”,而并非MVC风格的框架。它提供的库可以帮忙解决Web服务编程中各种底层的问题,包括context(在请求期间保存状态)、mux(路由和调度),以及实现HTTP上的安全cookie、会话、websocket和RPC等功能。

Gorilla没有提供模板、表单和其他前端部分。你需要自己准备这些部分,你可以在其他框架中使用Gorilla的各个组件,或是在独立组件中集成用Gorilla编写的东西。


Go Web开发框架:Echo


Echo是另一个小框架,主要面向API。例如,它并没有提供模板系统,所以你可以根据需要使用Go自己的html/template。但是,Echo提供了几种常常用于API的中间件模块,例如基本的认证和密钥身份验证、压缩、代理和日志记录。

Echo还提供了大量实用的recipe,其中很多无需大费周折就能实现。例如,如果你想使用Let’s Encrypt来管理HTTPS证书,那么可以设置一种recipe来自动安装这些证书。


Go Web开发框架:Iris


Iris的创建者称其为“真正属于Go的Express.js”,也就是说,它是JavaScript / Node.js的Web框架的Go语言版,它使用最小设计,绝大部分功能都由插件提供。Iris提供基本的MVC功能,自带对中间件、会话、路由和缓存的支持。

以下文档包含很多Iris的示例,包括与React前端的交互,或在Docker / Kubernetes环境中运行的项目:https://iris-go.com/v10/recipe


Go网络开发框架: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。

原文:https://www.infoworld.com/article/3274464/web-development/6-must-have-web-frameworks-for-the-google-go-language.html

作者:Serdar Yegulalp

译者:弯月;责编:杨丽



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK