JavaScript 框架们的残酷“框”生

本文翻译自 https://stackoverflow.blog/2018/01/11/brutal-lifecycle-javascript-frameworks/ , 作者 Lan Allen,翻译:Thomas Chan

JavaScript 的框架和库一直都在轮回之中,每半年(或时间再长点)都有新的出现,并宣称使开发模式发生了革命性变化,然后大把的开发者在他们的项目里使用、相关的文章发布、Stack Overflow 上继而出现很多相关问题和答案,再然后又出现了新的(更具革命性的)框架争得新宠。

让我们来通过Stack Overflow 趋势 看看那些主流的框架:Angular, React, Vue, Backbone, Knockout, Ember。

框架生命周期

我们可以在 Stack Overflow 趋势上查看每个框架在历史上的搜索热度,先来看几个比较大的框架。

trends-major

可以看出在很长一段时间里 Stack Overflow 的 JavaScript 领域 jQuery 都位居榜首,几乎占据新提出问题的 8%。直到 AngularJS 和后来的 React 出现急剧减少了社区中 jQuery 的份量。然后在 2016 年左右开始,开发者开始从 AngularJS 升级到了更受欢迎的下一代 Angular,也就是随后的 Angular 2+。

这些比较大的框架只是一部分,还有一些比较小的框架参与争夺。下面这张图可以看出其生命周期是多么的残酷。

trends-minor

JavaScript 框架通常会经历两个阶段,起初呈快速上升趋势,受到很多开发者的青睐而倍受欢迎,而后由于新生的技术渐渐的呈稳定下降趋势。这都是近几年的情况。从 2011 年开始,主流框架有:Backbone、Knockout 和 Ember。这些框架的相关提问从 2013 年开始便呈稳定下降趋势,同年 AngularJS 呈上升趋势。后起之秀 Vue.js 上升非常迅速,在 Stack Overflow 里是提问数量增长最快的之一,只有时间知道会持续到什么时候。

从语言或技术层面看

有很多因素会影响开发者选择这个或那个框架,不过开发者主要使用的语言或技术会使其更倾向于选择某个特定的框架。比如我们基本可以确定 Node.js 开发者选择的框架肯定跟 Ruby on Rails 开发者选的不一样。

把开发者按他们最常访问的标签分组,每组列出这些框架的占比,让我们来感受一下语言或技术对框架的影响。

trends-by-language

我们可以看到 typescript 和 css 的开发者相对更常使用框架,毕竟是前端开发使用的技术(译者注:看图还有 node.js 啊)。Angular 的占比在 TypeScript 中尤其大,因为 Angular(不是 AngularJS)是用 TypeScript 写的。

图里还包括了 C 和 C++,从占比看起来 C 和 C++ 开发者不太喜欢使用 JavaScript 框架。

从图中还可以看出来,不管什么语言,Angular 和 React 是目前为止最受欢迎的框架。这俩作为领先者不无道理,毕竟属于两家在技术上最牛逼和最有影响的公司。Angular 主要流行于 C#、Java 甚至 PHP 开发者中,而 React 则在 Rails、Node.js 和 Python 开发者中更受欢迎。

在流行度较低的框架里有几个有意思的点,Ember.js 和 Ruby on Rails 相比其他语言有着不一般的相关性,这可能是由于两者之间比较相似,Ember 是 Yehuda Katz 开发的,而 Yehuda Katz 是 Ruby on Rails 的核心开发之一。因此,Ember 和 Ruby on Rails 都是按约定编程的拥护者,使得开发者可以不需要关心繁琐的配置(除非必要)就能快速的出活儿而收获好评。

Knockout.js 则不意外的与 C# 开发者有更强的相关性,毕竟 Knockout 也是微软出的。PHP 也很有意思,PHP 主要就是用来开发网站的,从整体比例来看 Angular 或 React 的相关提问相比 Vue.js 而言并不是 PHP 开发者看的最多的。

从行业层面看

行业之间选择的 JavaScript 框也有很大不同,我们将访问者 IP 地址匹配到具体公司来看看。React 和 Angular 是最受欢迎的框架,我们对比了每个行业中主流企业与两者的相关性。

哪些行业更倾向于使用框架呢?

React-vs-Angular-by-industry

我们可以看出来文化传媒和零售业相比其他行业更倾向于使用框架,这些行业的公司更容易被新技术带来的富客户端所吸引,富客户端能给他们的用户更好的体验和更好的网上购物体验。而高校、政府、医疗行业则不太需要这些框架,可能是因为这些行业更关心数据管理和数据分析,而不是前端用户体验。

最让人奇怪的是保险行业,相比其他行业里,保险公司们似乎对 Angular 的使用率非常高,而不用 React。我们依然很好奇为什么会这样,如果有保险行业的开发者正在阅读此文,不妨在评论里留下你的观点。

React 和 Angular 在美国的使用情况

上一篇文章里,我们讨论了地区和编程技术的相关性。

所以让我们再来看看 React 和 Angular 在美国哪个城市里更常使用?

React-vs-Angular-by-cities

有趣的是,这俩框架在这些城市中分布很均匀,达拉斯(Dallas) 和 丹佛(Denver) 更倾向于 Angular,布鲁克林(Brooklyn) 和 旧金山(San Francisco) 更倾向于 React。我觉得旧金山(San Francisco) 和 布鲁克林(Brooklyn) 是美国最时髦的城市之二,这些城市里的开发者可能也是这么认为他们所选的框架的。

总结

这么说吧,尽管我是来自布鲁克林(Brooklyn) 的而且也有点喜欢 React,我并不是特别的支持某个框架。就像每个技术的选择,并不是因为热度有多高,而是因为各种权衡和手头能找到的工具。不过说实话,开发者社区的大小很重要,有助于蓬勃发展的开源环境,并且更容易在 Stack Overflow 上找到帮助。

不管你用哪个 JavaScript 框架,如果你是正在找工作的 web 开发者,Stack Overflow Jobs 上有一些正在招人的公司