vlambda博客
学习文章列表

Go语言新手该怎么选择Web框架学习?

所有初学Go语言的同学好像都会遇到一个问题:

该怎么选择Web框架学习?

我们建的交流群里面,新人问得最多的问题就是这个。

于是就有了这篇文章,我们详细来讨论下这个问题。

Go语言新手该怎么选择Web框架学习?

框架

我们要聊框架,就先分析下 go 语言里面的框架。

如果你有一定基础,用过一些框架,比如 gin 这些,你会发现它和 java 的框架不太一样;

好像没有一堆的代码需要拉到本地,也不需要在固定的文件结构里面写代码。

你似乎感觉你用的不是一个框架,好像就是一个包。

对,就是像一个包。

你或许会怀疑,gin 是不是个例,其实不是,其他像 go 里面比较出名的微服务框架 go-micro 也是如此。

go 语言里面的大部分框架都是这样的,使用时都是像一个包一样,大部分框架都不会约束你的文件结构,你想怎么建文件结构,随你心情。

这样一来,对开发者的要求相对来说就会高一些。

你需要理解框架是怎么运行的,你才可能知道怎么去开箱使用框架。

不能像其他语言的框架,你只需要在指定的文件夹,写固定代码,然后 run 就好了,稀里糊涂的就启动了程序。

为什么 Go 语言的框架不像框架?

不是说别的语言框架不好,也不是说 go 语言的框架就多好。

语言和框架都是时代的产物,一个框架的流行,必定和当时的技术趋势有关。

在微服务出现之前,大都是单体服务。

单体服务,需要处理很多问题,比如:页面渲染、数据流转、安全过滤等,每一个模块都需要顾忌到。

但是这些问题里面,大多数项目都是可以通用的,于是这部分就沉淀到了框架。

使用框架的人,就只需要去专心处理业务部分的代码即可。

所以,你会发现,之前的框架大都属于全家桶,大而全的风格。

但微服务概念出现之后,大家都不再喜欢开发大而全的服务了。

大家开始喜欢把不同的模块,独立成不同的服务。

这样渐渐的框架就开始往小而美的方向发展,尽量各司其职最好,互相依赖的越少越好。

试问现在做后端开发的,有多少同学还在用后端语言去渲染前端页面?

Go 怎么选框架学习?

最后我们回到主题,我们来列一下常见的 Web 框架,大致可以分为两个流

一个是大而全的,如:Beego 、Revel 等;

这类框架的特点是按 MVC 的方式去构建,如果要开发单体服务,或者需要渲染页面的服务,是比较好的选择。

另一个是小而美的,如:Gin 等;

这类不太像框架的框架,你也可以说他就是一个路由包,这类框架他非常适合去开发纯 API 的服务,他封装的功能非常有限。

是不是这么一分之后,再去选框架就容易多了!

尽管分类了,但是还是有这么多框架,该怎么学呢?不可能全部挨个学吧?

答案是否定的,如果你确实时间够多,全部挨个学也可以。

如果没有那么多精力的同学,就需要反复思考这句话了:框架是时代的产物!

所以选择框架学习时:

一、首先考虑学习框架的动力

学习和工作,是两个领域。

学习的技术不一定是为了工作,但是工作的技术你必须学习。

二、考虑你当前所处的技术环境是怎么样的?

如果你所处的技术环境还在单体服务,那就干大而全的框架。

如果你的技术环境已经开始往微服务跑了,最好是干小而美的框架。

如果你不知道自己当前所处的技术环境,精力也有限,那就从小而美的框架开始学习,搞定小而美的框架,再去搞一搞大而全的框架最稳妥。

你学废了么?