JavaScript年度调查报告:React、Vue和 Angular三分天下,谁将在2018年独占鳌头?
要论 2017年最主流的三个 Web前端框架,应莫过于 Angular、Vue和 React了。然而在实际应用中,这三个框架却不尽相同,对于规模不大的前端项目来说,Vue因其极易上手会被列出首选之位,Angular在快速开发大型 Web项目上很受推崇,但仍存诸多缺陷,React正为 JavaScript应用开发者提供新的开发方式。因此,面对各有千秋的开发框架,作为一名开发者该如何选择?哪种框架更具有前景?
接下来,本文作者通过近日最新发布的 JavaScript调查报告,分享其 15年的 Web开发经验,深度剖析前端框架的流行趋势及未来发展,希望给诸多前端开发者指明一些方向。
以下为译文:
其实在一年前,我的团队在重新项目时,采用了 Vue.js而非 React,且当时的我还做了一番预测:
按照目前的发展速度,我预测 Vue将在 16-24个月内成为主要的 JS框架,至少对于后端开发人员和小团队的前端人员来说是这样。当然,在 2017年,如果 React依然按照目前的速度不断提升自己的话,那么它将仍然会在 2017年占据前端框架的主导地位。
——2016年 12月 10日
如今,从最近的一份来自 stateofjs.com网站、且超过 23,000名开发者参与的关于 JavaScript的调查报告来看,事实的确如此。
Stateofjs 2017前端框架调查结果
与日常一样,使用 JavaScript编程语言的核心区别是由前端框架引起的。从调查报告来看,相比 Angular和 Vue, React是 2017年的主要 JavaScript框架,尤其是 React Native以前所未有的速度提升自己。同时因为 Angular的流行度下滑,Vue也受到越来越多的欢迎。
相较于 Stateofjs发布的 2016年前端框架调查结果:
基于以上,通过将 2017与 2016年的统计结果进行对比可以发现,在过去一年里 Vue.js是大家最想学习的框架,因此我个人预测明年将是 Vue.js成功的一年,当然 React增长很稳定,而 Angular将无法跟上这两个对手的脚步。2016年时,Vue.js被称为“另一个 JS框架”,当时它是一匹十足的黑马,而 React占据主导地位,Angular则是开发者的第二选择。
但是,Vue.js只会在 Web前端中占据主导地位,而不会统治所有的前端领域。React则可以在所有的前端领域中盛行。这是为什么呢?下面,我们将揭开谜底。
React统治前端领域的关键因素
答案就在 Stateofjs.com发布的 2017年移动和桌面应用前端框架的调查结果之中:
Synergy是 React能够统治所有前端领域的关键。
React Native
Vue.js未能提供替代 React Native的可行性方案(Weex和 Quasar太年轻,存在碎片化并且很脆弱),伴随着 React Native和 React.js的爆发式增长,如果你掌握了 Web前端的 React和 Redux ,你将获得极大优势:只要你想,便可在几周内熟练地将 React Native应用到移动端。在这一点上,React充分展示了它相比 Cordova和其他 Hybrid技术的优势。
如今最火热的前端需求在于移动端,而不再是 Web 。React Native非常成功,同时它也会带动 React.js的发展。
我们团队计划在 2018年第一季度发布自己 iOS和 Android App的一个大版本,将公司的网站从零开始改写(研发代号 Q3,采用 Vue.js和 Yii2),而新的 App基于 React Native开发。
其实,我们在一两年前就考虑使用 React Native来改写我们的 App ,但当时我们团队的 Swift开发者表示拒绝,如今看来这个决定是正确的,因为有时候我们需要等待技术成熟,这非常重要。如今我们结束了用 Swift开发 iOS应用 ,用 Java开发 Android程序的局面,避免了不同操作系统 App使用不同开发语言的痛苦。
现在我们的 Swift开发人员正在使用 React Native编写 JS代码,并承认 React确实好用,他认为现在是转到新的技术栈的好时机,因为在很多情况下 React Native的优点都大于缺点。
我们使用 Vue.js编写 Web的前端人员几周就掌握了 React Native ,但是我认为这个转变是值得的,如果我们 Web也使用 React.js,那么我们的技术栈将会变得更简单。我并不后悔使用 Vue.js开发 Web,具体原因在我以前的一篇文章中解释过(http://pixeljets.com/blog/why-we-chose-vuejs-over-react/),实际上我对 Vue.js在 Web领域的预测已经成为现实,但我仍然期望在 2018年里中小型团队继续选择用 React来进行 Web和移动端的开发,因为 synergy的存在我相信这样的选择是明智的。
使用 Java和 Swift / Objective C分别开发不同平台的 App虽然没错,但是从商业的角度来看,它的代价是很高的,此外,与 React Native Codepush相比,想要通过 App Store的审核也不是那么容易的。
GraphQL
GraphQL是 Facebook的另一个重量级产品,它让 React生态系统如虎添翼。
虽然它当前还不成熟,比较复杂并且有缺点,但是看起来 GraphQL在未来将有很大可能替代 REST。
GraphQL标志着前端领域大多数的创新都发生在 React圈,然后这些创新再在其他框架中被采用和改进。
Angular的未来预测
Stackoverflow展示了一个有关前端开发人员问题的有趣图表:
Angular在这张图中看起来很好,但我不并认为这预示着 Angular作为一个框架能够取得长期成功。在我看来,对于那些维护传统的 Angular 1代码的开发者来说,从 Angular 1迁移到 Angular2 +是一个明智的选择,但是当他试图迁移并且看到 Angular的新老版本之间的巨大区别时,这会产生挫败感,并且这个事实也解释了 Stackoverflow上有大量问题的原因。
Vue.js的缺陷
Vue.js目前即便还无法支持移动应用,但在 2017年的其中一段时间,它通过获得开发者的支持而赢得了与 React的竞争。
WordPress正在考虑用 React来构建其前端布局,并且很可能将 Vue.js加入 WordPress生态系统,就像 Laravel一样。不过 Facebook很快就调整了 React许可证,并将这个想法扼杀了。
写在最后
通过三大框架的对比,我们更倾向于 React,在此也推荐其他的团队根据自身的情况选择 Vue.js或 React。基于此,开发者也在 Hacker News (https://news.ycombinator.com/item?id=15999688)上发表了自己的看法:
@antoriv:
在这次的调查报告中,我最感兴趣的是百分比,即(以前使用过、将再次使用)/(以前使用过、再次使用+之前使用过、不再使用)。
2016年:
- React – 91%的满意度
- Vue – 91%的满意度
- Angular 2 – 65%的满意度
- No framework – 65%的满意度
- Ember – 50%的满意度
- Angular – 40%的满意度
- Backbone – 31%的满意度
2017年:
- React – 93%的满意度
- Vue – 91%的满意度
- Angular 2 – 66%的满意度
- No framework – 65%的满意度
- Aurelia – 56% 的满意度
- Polymer – 53% 的满意度
- Ember – 41% 的满意度
- Angular – 33% 的满意度
- Backbone – 23% 的满意度
其中,特别有趣的是,许多框架的满意度比“没有框架”的高。当然这主要归因于很多没有使用框架的开发者。我就曾遇到过一些认为前端框架是无稽之谈的开发者(通常是后端开发人员),他们更喜欢只写一堆 jQuery。另外,如果您在 WordPress网站上工作,那么框架往往是没有必要的。
个人而言,我已经习惯在这些框架(Backbone,Angular 1,Ember和 React)中编写代码,我更喜欢React。