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