今天我们聊一聊现在主流的三大前端框架,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。

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数据进行了简要分析,然后分别对这三个框架进行了简要介绍,最后给出了个人建议。

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

版权声明:本文为jiangwenxin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jiangwenxin/archive/2004/01/13/13640760.html