前端三大主流框架如何去选择?

今天咱们聊一聊如今主流的三大前端框架,React、Angular、Vue。em。。。等等,稍微纠正一下,React其实并不能算是真正的前端框架,它其实更相似于像JQuery同样的前端包库。这个定义不重要,React这么流行那咱们就把它和Angular、Vue一块儿聊一聊。前端

先说一下为何想聊一下这个话题,由于在工做中我发现有的人会React,有的人会Angular,还有的人会Vue,甚至有的人并不会这三个主流框架中的任何一个,而仅仅会JavaScript,而这些朋友统称为前端工程师。哇哦!前端工程师差异这么大呢?!我在公司作面试官时就发现不少时候咱们想要一个能够开发Angular的人员,因此咱们必须在招聘要求上说明要熟悉JavaScript,属性Angular等等,我会常常以为优势废话呢。可是没办法,若是不写清楚须要熟悉Angular,你会收到一堆不匹配的简历。因此今天聊这三个框架我并不想说出相似于“React是最好的前端框架”这种话。由于每一种框架都会有它本身的优势与缺点,做为一个前端开发者,咱们应该所有掌握。面试

热度大比拼

咱们先看看这三个框架在Google Trends的表现,由于在Google Trends上并无Vue主题,因此为了公平起见我选择了计算机类型,并以搜索词做为比较对象,虽然这样比较也并不十分准确,但也足以说明咱们想要的答案。后端

React和Angular热度差很少,奇怪的是在2018/12/23~2018/12/29这个时间段React和Angular热度都有很大的降低,Vue虽然也稍有降低,可是不算不少,这里我猜想是歪果仁们都去过圣诞节了,谁还有心思写代码啊。圣诞节对中国人来讲不是主要节日,但程序猿们也可能会追一下潮流,因此也稍有降低。什么?为何Vue跟中国有关系?由于Vue是中国人发明的,它的主要市场在中国。在这个热度比较中对Vue有不少不公平,由于不少国人可能会经过百度等国内搜索引擎,但这里咱们不深究,由于即时如此React和Angular能够说是国际流行,Vue与这两个框架在市场份额上仍是有所差距。前端框架

在GitHub上,Vue的关注度很高,其热度和稳定性一点不输给Angular和Vue,Angular的Issues很高,这说明Angular的稳定性还不足。经过这个图表,咱们能够看出Angular和Vue的热度在持续增长,React由于发布较早已区域稳定,但结合Google Trends图咱们能够看出,React已经是成熟稳定的JavaScript包库,它的市场占有率和使用率仍是很大的。前端工程师

React

React是由Facebook公司推出的前端包库。提供了响应式和组件化的视图组件,而且拥有强大的路由系统,在React中淡化了HTML和CSS的模版应用,它经过JSX语法糖能够方便快捷的创建网页节点。React Native让React具备多平台的能力。React最大的优势就是经过虚拟DOM实现高性能,而且具备繁荣的生态社区。架构

因为React淡化了HTML模版概念,这使得大多数前端开发者在开始学习React时不习惯,HTML能够给开发者更为直观的开发感觉。React使用CSS-In-JS实现CSS引入,这须要额外的运行时程序开销。React依赖繁荣的社区来丰富自身的能力,这也使得功能维护更分散。React的类库虽然尽量的与React共享API和生态,但它们也有本身的小生态。所以不少时候类库并非全部功能都彻底兼容React。框架

React的主要用户有Facebook、Uber、Netflix、Twitter、Udemy、Paypal、Reddit、Tumblr、Walmart。ide

Angular

Angular如今由Google团队维护的一个JS框架,它是在AngularJS 1.X以后从新开发的全新框架,所以Angular不具备兼容AngularJS的能力。Angular是基于TypeScript开发的JavaScript MVVM框架,这里我也见到有网友认为它是MVC框架,我我的更偏向于MVVM。它具备很强的HTML和CSS亲和性,这让不少传统开发者能够更快上手。它具备本身的DSL语言,可方便的在HTML中实现逻辑判断、for循环等功能。Angular以模型、组件、模版、服务等等相似于Java和C++面向对象的概念,这也让后端开发者能够更容易的学习。组件化

Angular因为其设计引入不少架构概念,致使其复杂度很高,提高了学习曲线的陡峭程度。Angular具备很强的规则性,也就是说不管开发者开发大项目仍是小项目都必须按照其规则进行开发,这致使其向下扩展性不足。Angular的项目体积相对于React和Vue都会比较大,虽然并不必定对性能产生很大的影响,可是下降了它与React和Vue的竞争力。性能

Angular的主要用户有Google、Forbes、WhatsApp、Instagram、healthcare.gov。

Vue

Vue的创始人是中国人尤雨溪,做为中国人感受骄傲一下。因为尤雨溪参与过Angular的开发,所以Vue的设计参考了React、Angular和Polymer,我我的以为Vue更像是React和Angular的结合,舍去了两者的一些缺点,整合了两者的主要优势。Vue也使用了虚拟DOM,并提供了响应式和组件化的视图组件,官方提供了基于核心包以外强大的路由系统和状态管理库。Vue主要支持HTML和CSS模版,但同时也支持JSX和CSS-In-JS,也可方便的继承Redux,它须要结合Weex实现多平台的能力。Vue更像是更简单的React+Mobx。它兼具React的高性能和Angular的框架组织性,并具备很好的向下向上扩展性。

Vue是基于Flow团队设计的,而因为Flow团队的GG,因此其在类型推导上相比Angular要略逊一筹,但据创始人尤雨溪透露,在Vue的下一个版本中将会基于TS实现更好的类型推导能力。(可参考InfoQ文章:尤雨溪回应:Vue 与 TypeScript 为何相性特别差?)

Vue的主要用户有Alibaba、Gitlab、Baidu、京东等公司。

我的建议

其实对于开发而言React、Angular和Vue都是很好的前端框架,三者在性能上都表现的不错(参考:benchmark)。咱们都应该熟练掌握,React做为发布较早较稳定的JavaScript包库,其市场份额仍是至关大的,是通过了市场检验的。Angular和Vue做为亲和HTML和CSS模版的框架,可让开发者更容易学习。Vue更是兼备React和Angular的优势,解决了两者的一些缺点,这使得其具备更好的开发体验。因此我的以为Vue较React和Angular略胜一筹。但这三个框架都由大的技术公司维护,因此并不能说那个框架就必定更优。

总结

本文主要比较了如今市场上比较火热的三大前端框架,先根据Google Trends和Github数据进行了简要分析,而后分别对这三个框架进行了简要介绍,最后给出了我的建议。

本文目标并非告诉你们那个框架好那个框架很差,这三个框架如今都由大公司维护,所以其技术发展潜力仍是很好的,并且三个框架都有世界知名技术公司在使用,所以其社区繁荣度较其余一些小型框架会更好。因此建议你们仍是本着我的技术能力出发,尽可能都能熟练掌握,这样才能更为游刃有余。