本文主要介绍三大主流框架优缺点,给架构选型提供建议,源于耗叔在左耳听风专栏中推荐的一篇英文文章ReactJS vs Angular5 vs Vue.js — What to choose in 2018?,耗叔在他的专栏文章中看好React和Vue。
JavaScript框架以极快的速度发展,也就是Angular, ReactJS和Vue.js的版本会经常更新。首先,我们分析特定框架技能的全球开放岗位的数量,下图是Indeed.com 上超过60000个工作岗位的分布:
Angular 5的优缺点
Angular是一个完全采用JavaScript的MVVM框架,创建于2009年,非常适合构建高度交互的web应用程序。
Angular 5的优点:
•新特点如增强的RXJS,更快的编译(3秒内),新的HttpClient launch。
•文档详细,包含单个开发人员所有必要的信息,而无需询问他的同事。然而,这需要更多的时间来学习。
•使能应用程序单一行为的双向数据绑定,能最小化可能错误造成的风险。
•MVVM (Model-View-ViewModel)使得开发人员可以使用相同的数据集在相同的应用程序部分单独工作。
•组件模块化特点的依赖注入。
Angular 5的缺点:
•始于第一版的复杂语法,然而,相较而言Angular 5采用TypeScript 2.4是学习难度最小的。
•从旧版本迁移到最新版本时可能出现的迁移问题。
采用 Angular 5的公司: Upwork, Freelancer, Udemy, YouTube, Paypal, Nike, Google, Telegram, Weather, iStockphoto, AWS, Crunchbase.
ReactJS的优缺点
ReactJS 是2013年由Facebook开源的JavaScript库,对于构建数据经常改变的大型web应用程序非常有用。
ReactJS的优点:
•容易学。React在语法方面非常简单,因此更容易学习。工程师只需要回想一下他们的HTML写作技巧就行了。不需要像在Angular中那样深入学习TypeScript.
•高度的灵活性和最大的响应能力。
•Virtual DOM (document object model)允许将HTML、XHTML或XML格式的文档排列到一个树中,在解析web应用程序的不同元素时,该树更容易被web浏览器接受。
•结合ES6/7, ReactJS 能够以简单的方式在高负载下工作。
•向下数据绑定,这意味着在这种数据流中,子元素不能影响父数据。
•100%的开源JavaScript库,根据世界各地开发人员的贡献,每天进行大量的更新和改进。
•绝对轻量级的,因为在用户端执行的数据可以很容易地在服务器端同时表示。
•版本迁移通常非常简单,Facebook提供了“代码模型”使大部分过程自动化。
ReactJS的缺点:
•缺乏官方文档-超快开发没有为适当的文档留出空间,这有点混乱,因为许多开发人员在没有任何系统方法的情况下单独贡献文档。
•React是没有见解的,这意味着开发人员有时有太多的选择;
•需要很长时间才能掌握,这意味着React JS需要深入了解如何将用户界面集成到MVC框架中。
采用ReactJS的公司: Facebook, Instagram, Netflix, New York Times, Yahoo, Khan Academy, Whatsapp, Codecademy, Dropbox, Airbnb, Asana, Atlassian, Intercom, Microsoft.
Vue.js的优缺点
Vue.js 是在2013年发起的 JavaScript 框架,它非常适合创建高度适应性的用户界面和复杂的单页应用程序。
Vue.js的优点:
•授权的HTML。这意味着Vue.js具有许多与Angular类似的特性,这有助于优化使用不同组件的HTML块处理。
•详细的文档。Vue.js有非常详细的文档,可以加快开发人员的学习进度,并且仅使用HTML和JavaScript的基本知识就可以节省开发应用程序的大量时间。.
•适应性。它提供了从其他框架到Vue.js的快速切换周期,因为它和Angular、React在设计和体系结构方面非常相似。
•很棒的整合。Vue.js既可以用于构建单页应用程序,也可以用于更困难的应用程序web界面。主要的一点是,较小的交互部分可以容易地集成到现有基础设施中,而不会对整个系统造成负面影响。
•大规模缩放。Vue.js可以帮助开发相当大的可重用模板,根据其简单的结构,无需为此分配额外的时间,即可制作这些模板。
•微小的尺寸。Vue.js以约20KB,保持其速度和灵活性,从而与其他框架相比可以获得更好的性能。
Vue.js的缺点:
•缺乏资源。与React或Angular相比,Vue.js的市场份额仍然很小,这意味着在这个框架中的知识共享仍处于初始阶段。
•过度灵活的风险。有时,Vue.js在集成到大型项目时可能会遇到问题,并且仍然没有关于可能解决方案的经验,但是它们肯定很快就会出现。
•缺乏完整的英文文档。这导致了一些发展阶段的部分复杂性,然而,越来越多的材料被翻译成英语。
采用Vue.js的公司: Xiaomi, Alibaba, WizzAir, EuroNews, Grammarly, Gitlab and Laracasts, Adobe, Behance, Codeship, Reuters.
结论
对于一个真正的工程师来说,选择哪种框架并没有本质的区别,只是需要一些时间来适应新的框架。在我们公司,我们用的最多的是react tjs和Angular 2/4/5,但Vue.js也在用。每个框架都有自己的优缺点,这意味着在产品开发过程中,每个案例都应该有一个正确的选择。