所有新手好像都会遇到一个问题:

该怎么选择 Web 框架学习?

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

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

一、框架

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

如果你有一定基础,用过一些框架,比如 gin 这些,你会发现他和 java 的框架不太一样,好像没有一堆的代码需要拉到本地,也不需要在固定的文件结构里面写代码。

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

对,就是像一个包。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

三、Go 怎么选框架学习?

最后我们回到主题,我们来列一下常见的框架:

首先我们先来看 web 框架,大致可以分为两个流派。

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

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

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

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

这么多框架改怎么学呢,不可能全部挨个学吧?

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

我们需要理解:框架是时代的产物!

所以选择框架时:

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

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

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

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

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

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

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

你学废了么?

欢迎加入我们的交流群一起讨论。

只需要在公众号里面回复 加群 即可收获一群学习 Go 语言 的小伙伴,快来吧!