近日, 在前端的 JavaScript 框架世界发生了一件称得上是 "里程碑" 的事: vue.js 在 GitHub 上的 star 数量终于超过了 React.js 的 star 数量.
通过使用一个叫做 Star History 的工具, 我们可以清楚看到: React 长期以来的 "历史主导地位" 是如何慢慢被暴涨的 vue 所超越.
通常情况下, 当框架的流行度提高时, 往往会引发大量关于哪个框架 "确实" 更受欢迎, 哪个框架更强大以及其他方面的争论.
项目的 star 数量 vs 实际使用情况
不要误解我的意思, 我很喜欢 Vue -- 最近我使用它的频率远远超过了 React 的频率, 但一个项目在 github 上的 star 数量更多的是衡量它的 "流行" 程度, 而不是实际使用情况. 下面举一个明显的例子, 我们拿比较流行的 Apache 服务器 httpd 和一个相对来说意义没那么重大的 JavaScript 项目 colors.js 来对比:
支持着 38% 互联网的 web 服务器在 GitHub 上拥有 1766 个 star, 而为 Node 控制台添加颜色的 JavaScript 库有 3206 个 star.
因此, 为了更好地了解 Vue vs React 的相对流行度, 我们需要一些方法来衡量项目的实际使用情况.
用项目在 NPM 的下载量作为实际使用情况的参考
没有存在完美的衡量手段 -- 因为安装和使用这些项目有很多种办法, 之所以选择了 npm 作为参考是因为 npm 已经成为安装 JavaScript 包的事实标准.
如果我们查看每个框架的核心软件包的下载统计数据 -- vue 软件包和 react 软件包, 它们应该能反映出合理的实际使用情况.
为此, 我使用了一个名为 npm-stat.com 的网站, 通过该网站, 你能生成可回溯到 2015 年 2 月的 NPM 软件包的历史下载图(这与 NPM 注册管理机构报告下载数据的时间相同).
由数据可知: React 仍然处于主导地位
纵观过去两年的数据, 我们可以看到, 与 github 的 star 数形成鲜明对比的是, 根据 NPM 软件包的下载量来衡量, React 仍然在实际使用方面占据主导地位.
这并不是说 Vue 在被采用方面的数据表现不佳 -- 事实上, Vue 在这方面的倍数略有增加, 从 2016 年 6 月大约 12:1 的比例 (1.693M vs 141.5k) 下降到 2018 年 5 月 7:1 的比例(9.388M vs 1.374M), 两者的差距明显的缩小了. 但在实际使用方面, React 仍然与 Vue 保持着巨大的差距.
添加 Angular 以进行综合对比
虽然上面的讨论主要集中在 React 和 Vue, 但我们还是要看一下前端 "三大" 框架的其他成员, Angular.
由于 Angular 社区包含 "Angular.js" 和 "Angular" 这两个版本(Angular 2 及之后的版本都叫 Angular, 使用 TypeScript 编写), 因此将这两个都添加到我们的比较中.
首先, 就 github 的 star 数目来看:
我们可以看到 Angular.js 与 React 和 Vue 相比曾一度处于领先的地位, 但在 2016 年年中被 React 超越, 然后 2017 年被 Vue 超越. 第二个迭代版本 Angular 自 2016 年 9 月推出以来, 它的 star 数目逐渐上升, 现在也已经慢慢赶上了 Angular .js, 但在受欢迎程度方面依然处于第四位.
Angular 的 NPM 下载情况
观察两个 Angular 版本的实际使用情况而不是 star 数目, 我们可以发现不一样的东西.
'angular' 即 Angular.js,@angular/core 是 Angular
从使用方面来看, 新版 Angular 在发布后立即从 Vue 和 Angular.js 中冒出来, 从那时起一直保持领先地位, 尽管远没有接近 React.
在此期间, Vue 在 2016 年 9 月的下载量约为 Angular.js 和 Angular 总和的 1/3, 并于 2018 年 5 月达到 1/2, 还超过了 Angular.js.
总结: React 仍处于主导地位, Vue 增长得越来越快
通过深入了解 NPM 的下载统计数据, 我们发现尽管大家都围绕着 Vue 疯狂增长的 star 数来大肆宣传, 但 React 仍然在 JavaScript 框架世界中稳坐 "主导" 的位置. 它即将超过每月 1000 万的巨大下载量, 并且还一直保持着高速的增长.
但在过去的两年中, Vue 的增长速度比其他任何主流的 JavaScript 框架都快, 最近赶上了 Angular.js, 并逐渐缩小了它与 Angular 和 React 之间的差距.
来源: http://developer.51cto.com/art/201806/576759.htm