本文由 Stack Overflow 的员工撰写,他通过 Stack Overflow 的趋势工具和他们的内部流量数据,分析了主流的 JavaScript 框架有着怎样的兴盛起衰,以及背后的一些原因。
新的 JavaScript UI 框架和库似乎一直都在不停地发布。每隔六个月,我们就会看到一个全新的框架声称自己已彻底改变了 UI 的发展,然后成千上万的开发者在自己的项目中使用它们,写博客分享使用心得,在 Stack Overflow 中提问和回答,日复一日,然后又出现一个更新的(甚至更革命性的)框架来取代上一个的“王位”。
通过 Stack Overflow 的趋势工具以及它们的一些内部流量数据,Stack Overflow 的开发者决定看一看一些突出的框架现在发展如何,包括 Angular, React, Vue.js, Backbone, Knockout 和 Ember。
框架的生命周期
Stack Overflow 的趋势让我们了解到,这些技术随着时间的推移,被提问的情况如何,先看一些相对来说用户群体较大的框架。
有一段时间,jQuery 是 Stack Overflow 中 JavaScript 标签的热门关键字,关于它的提问几乎占了新问题的 8%。随着 AngularJS 和后来 React 的发布,图片中的走势迅速发生了变化,它们蚕食了 jQuery 在社区中的占有份额。然后从 2016 年左右开始,开发者开始迁移至谷歌最好和最新的流行框架,所以我们看到 AngularJS 的用户也开始迅速转用它的后续版本 Angular 2+。
这些用户群体较大的框架只显示了部分情况,事实上,也有较小的框架在争夺主导地位。我们可以从下面的图片看到这些 JavaScript 框架生命周期的残酷程度。
JavaScript 框架的使用似乎有两个主要阶段。随着框架越来越受欢迎,它们似乎都有一个快速上升的阶段,然后又因为开发者采用更新的技术,它们的上升开始变得没那么快而且总体是稳步下降。这些框架的生命周期只有几年。
从 2011 年开始,业界似乎主要采用了几个存在竞争的框架:Backbone, Knockout 和 Ember。有关这些标签的问题在 2013 年左右出现增长,并且在 AngularJS 开始增长的同时,又开始在稳步下滑。最近的后起之秀是 Vue.js 框架,它被迅速采用,我们可以看到它是 Stack Overflow 上增长最快的标签之一。
不过,最终只有时间可以说明这种增长将会持续多久。
通过编程语言和技术进行分析
开发者使用某个特定的前端框架或其他框架都会有各种各样的因素,主要使用某种编程语言或技术的开发者可能更倾向于选择某个 UI 框架。例如,我们可能会认为 Node.JS 开发者会选择使用与 Ruby on Rails 开发者不同的框架。
根据开发者最常访问的标签将他们划分成不同的组,通过进行分组,检查每个组流向这些框架的流量的百分比。
明显可以看到,使用 TypeScript 和 CSS 的开发者对 JavaScript 框架流量的贡献都比较高。这是很正常的,因为使用这些技术的一般是前端开发者,所以他们更有可能使用 JavaScript 框架。尤其是 Angular,它和 TypeScript 的依赖关系特别强,因为 Angular(不是 AngularJS)是用 TypeScript 编写的。
这次分析也包含了对 C++ 和 C 开发者的分析,由于主要使用 C 和 C++ 的开发者更倾向于进行更多的系统编程,所以他们不太可能使用 JavaScript UI 框架,因此它们在每个框架中都只是拥有相对较低的百分比。
不过无论使用什么技术,Angular 和 React 都是最受欢迎的。这也是有道理的,他们是先行者,而且背后有两个最大和最有影响力的科技公司的支持。我们还能发现,Angular 在 C#, Java 和 PHP(某种程度上)开发者中的受众更多,而 React 更受 Rails,Node.js 和 Python 开发者的欢迎。
对于 Knockout.js,它主要通过 C# 开发者获得更多的流量,因为 Knockout 也是微软的技术。
PHP 是一个有趣的案例,它是为 Web 开发而设计的,但是 PHP 开发者并没有访问很多关于 Angular 或 React 的问题(整体上来看),反而对于 Vue.js 问题的访问显得有些不成比例。
后面,作者主要通过行业和地理位置(美国地区)这两个角度对最受欢迎的两大热门框架 React 和 Angular 进行了分析,不妨看看数据。
最后,作者对此发表了自己的看法,他不会主张使用任何一种框架。就像对于每一项技术的选择一样,它的考虑因素不应是“火热程度”,而是权衡取舍和是否适合解决手头的问题。不过另一方面,开发者社区的规模确实很重要。它有助于开源环境的繁荣,并且更容易在 Stack Overflow 以及网络上找到帮助。