文档章节

Go语言的Web框架

傅小黑
 傅小黑
发布于 2014/03/13 22:47
字数 946
阅读 7156
收藏 16

我去年开始研究Go语言,不知不觉快有一年了。以前我研究php和nodejs,都是弱类型的解释性语言。想找一个编译型的强类型语言继续学习,就选中了新奇的Go语言。我只关注Web方面的应用,看了很多有兴趣的开源的Go Web框架,随便吐槽一下。

revel

revel 是最早的Go语言Web框架,借鉴的java和scala语言的 play框架 的很多想法。最早我看play 1.x时期在java社区似乎带来一股全新的风气,感觉是很有意思的事情。后来 play 2.x 转投scala阵营,把java开发者带入深渊,被很多人无情的吐槽。如今,play社区还是不温不火的,国内应用也小众。

revel 这玩意儿带有和play一样的毛病,舍弃了原有的标准完全自己来。revel 完全不理 Go标准库的一套,全部是自己的概念;类似的play舍弃了servlet 3标准。结果就是,我看了半天,还是不晓得该怎么用。自带的概念太多,是个障碍啊!

当然,revel 的案例还是有的,比如 山坡网。他的作者的博客也有很多关于revel的教程文章。

<!--more-->

beego

beego 是国内最火热的框架吧。当初借着给他贡献一些代码注释,通读了整个的源码。要按我的想法,这是一个比较中型的框架。除了基础的MVC结构外,还带有Cache,ORM,Session等多个库的支持。像这样面面俱到,对开发者而言是好事。

但是面面俱到的问题是,能不能用别人的Session或者Cache呢?已经有使用xorm这个ORM库代替beego自带的ORM的案例。不过总会有一种错觉:“它提供了就用它自己的吧,别的万一出问题还不会搞”,额呵呵呵。

beego 用的人很多,文档也很齐全(更新不太及时),社区和Q群也很活跃。因而,选择beego是不错的。

martini

martini 是新锐的框架,概念非常不错。不过,martini只是一个微型框架,只带有简单的核心,路由功能和依赖注入容器inject。因此很多东西需要自己写,比如view,session等。而且目前也没有看到比较好的与数据库结合使用的例子。学习起来有一点困难。

换个角度说,martini营造的不是一个大而全的框架,而是一种组件生态martini-contrib。这个就是nodejs中的expressjs在做的事情。而且他的DI实现,让第三方库很容易改造为martini规范的中间件。倘若组件多起来,相信会有很大前途的。

不过,由于依赖注入的实现依赖reflect反射,而Go语言的反射库效率很差。过多的中间件肯定会拖慢整体的速度。这就只能看Go语言以后的发展咯。

总结一下

主要的框架现在是这三个。其实还有很多挺好玩的实现,比如类似java structxweb,类似 python flaskentropyASP.NET MVCgoku。 多去看看,肯定是有好处的。

但是,更重要的,熟悉标准库 !!!!!!


小站原文:Go语言的Web框架

© 著作权归作者所有

傅小黑
粉丝 155
博文 7
码字总数 13850
作品 1
厦门
高级程序员
私信 提问
加载中

评论(6)

theshen100
theshen100
这里有大家对Go Web框架的投票,可以参考下
https://www.golang123.com/vote/1
jack984
jack984
请教做网站 和 app api,用什么语言速度和综合效率好,php python nodejs golang??
golang的martini revel beego echo等,比php的laravel,ci 框架做网站还要好用易用高效吗。
傅小黑
傅小黑 博主

引用来自“邓攀”的评论

兄台好厉害,有空一起研究下mozilla rust 语言呗,那个我看了下也是好东西甚至别人说超go很多,go不知道google是不是玩了就丢了,我等mozilla用rust重写firefox或者servo完整出来了我就再大规模用rust,国内的rust书博客几乎没有,go但是出了好几本

早就玩过了。。。比go复杂得多,而且现在更早期

哈哈__哈哈
哈哈__哈哈
兄台好厉害,有空一起研究下mozilla rust 语言呗,那个我看了下也是好东西甚至别人说超go很多,go不知道google是不是玩了就丢了,我等mozilla用rust重写firefox或者servo完整出来了我就再大规模用rust,国内的rust书博客几乎没有,go但是出了好几本
傅小黑
傅小黑 博主

引用来自“viney”的评论

revel支持下。playframework2.x也不错,抛弃了servlet,抛弃了tomcat也是一种创新。学习起来比SSH容易上手,没那么多概念。

revel和ssh比简单多啦。。ssh可不是一个,是三个
viney
viney
revel支持下。playframework2.x也不错,抛弃了servlet,抛弃了tomcat也是一种创新。学习起来比SSH容易上手,没那么多概念。
三个类似 Sinatra 的 Java 框架介绍

Sinatra 是一个微型的 Ruby 语言的 Web 框架,据说 100 行代码就可以开发一个博客软件。一个简单的hello world的web应用用Sinatra只需5行代码: 而 Sinatra 这种框架的思路被越来越人所接受,...

红薯
2012/01/05
10.2K
23
secondriver/go-box

Go-Box Go语言实践, 归档go语言开发,应用,代码包,帮助文档,学习资料 环境 Go SDK "下载" Go 开发工具LiteIDE "LiteIDE 是一款简单、开源、跨平台的 Go 语言 IDE" Go 环境搭建 应用 warm...

secondriver
2015/09/30
0
0
你应该知道的9款流行 Web 框架及其优缺点

对于 Web 开发人员来说,找到一些合适的工具,能让工作轻松许多。这其中,Web 框架更是提升工作效率的“利器”。但因为可选的 Web 框架非常多,如何选择也是一件令人头疼的事情。 本文列出了...

王练
2016/12/01
14.7K
50
《Go Web编程》这一本不可错过!(文末有福利)

众多业界大咖推荐: “随着Go语言变得日益重要,对优质Go语言教程的需求也与日俱增,本书的出现可谓恰逢其时。” ——Shaun Lippy,Oracle 集团 “无论你是一位经验老到的gopher,还是一位刚...

csdnsevenn
2017/12/10
0
0
web开发快餐式入门指南 0. 写在前面

Web框架层出不穷,然而它们又大同小异。绝大多数框架都按照MVC架构风格所设计,所以他们提供的组件和功能都十分类似。很多教程在讲解如何使用某一框架开发Web应用时,专注于它在这个框架的实...

apachecn_飞龙
2016/02/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
今天
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
今天
8
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
今天
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
今天
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部