曾几何时,大家都在写前端框架。可以从网上弄一些js脚本,自己打包做一个框架。不过,除了吹牛之外,它没有卵用。后来Jqury出现,几乎一统天下,但也只是昙花一现,好景不长。近年来,随着移动互联网的发展,Ajax技术、V8引擎和Node.js的出现和流行,催生了JS和前端(全栈)开发的热潮。前端框架又火了,百家争鸣,但最火的还是React、Angular和Vue。由于Angular和Vue在语法上相似,如何选择,本文将对两者进行比较。概述Angular是一种非常流行的企业级解决方案。银行、金融机构和后端开发人员普遍支持Angular。Angular由Google提供支持,并被世界上许多知名公司使用,例如WhatsApp、Instagram、PayPal等。Vue由前Google员工游玉玺(尤小右@weibo)创建。游玉玺一开始在谷歌的Angular团队工作,对Angular有很深的理解。Vue吸取了Angular的精髓,同时提供了构建快捷、使用方便的特点。既然它的创造者是中国人,自然更符合中国人的思维。嗯,Vue在国内很流行。例如阿里、百度、小米、饿了么、美团、B站等都在使用Vue.js,GitLab、Grammarly、Chess、fontawesome等十几个知名项目也在使用Vue.js。Angular是开发企业应用程序客户端的默认商业解决方案。Angular是一个更强大、更成熟的框架,通常需要更多时间来开发应用程序。而Vue非常适合简单、易用、高性能,非常适合对性能要求高的应用和快速原型制作。与开发社区相比,得益于Google的背书,很容易在大树下乘凉,Angular更加稳定成熟,开发速度飞快。Angular在Twitter上有313,000名粉丝,而Vue有128,000名粉丝。游小游微博粉丝不到8万,知乎粉丝9万左右。为了比较Angular和Vue最近的下载量,比较NPM过去一年的下载量是很有意思的:两个框架的GitHub活跃指数。Vue比Angular有更多的星星和叉子。截至目前,Vue拥有18,743个Fork和131,381个star,而Angular只有12,144个Fork和46,265个star。vue显然更受欢迎,当然可能是因为国人用的比较多。Angular在贡献者数量上领先:869到268。由于Angular比较老,这也是意料之中的。开发者调查根据Js2018调查,Vue.js做得很好。Vue职位不仅提供与Angular薪水相当的平均薪水,而且在初次使用后放弃的人也比Angular少得多。目前,愿意在工作中使用Vue和Angular的经验丰富的开发人员数量差不多,但纯Angular开发人员并不多,更多的人支持Vue和React。调查结果显示,更多人对学习Vue更感兴趣。就业市场趋势与此同时,就业市场仍然由Angular主导。Angular的工作机会正在减少,已被ReactJs取代,Vue紧随其后。最近一篇关于jobfluent的文章清楚地表明了这一趋势。相比之下,Angular的工作机会要多于Vue的工作机会。不过估计Vue很快就会赶上来,尤其是在国内市场(暂无数据)。性能比较接下来,我们比较运行时性能。通常,在大多数指标中,Angular和Vue是绿色的,或者更糟的是黄色。Angular只有一个指标表现不佳:非键控脚本的启动时间。Angular的227.6与Vue的56.9相比,很明显在代码库中引用Angular会导致性能问题。在空间和内存受限的应用程序中,Vue是自然的选择。基于公共数据,启动和内存分配是Angular的弱项,而它在运行时指标上优于Vue。详细的结果和脚本见github仓库(github:/krausest/js-framework-benchmark)语法比较Vue.js的一些功能是从Angular派生出来的。模板、模型绑定、循环、条件和事件绑定都以类似方式工作。由于Angular开发人员多于Vue,因此从Angular切换到Vue将很容易。因此,这是两者相似之处的示例:模板在技术上可以依赖相同的语法。模板引擎在评估对象、数组和json时有细微的差别。相同的语法是:{{expression}}模型绑定的语法和原理很相似,只是属性名不同。Angular:VUE:循环Vue语法显然受到Angular的启发,差异很小。注意:Vue.js的v-repeat简化了ng-repeat的语法。Angular:VUE:条件语句除了ng-和v-前缀外基本相同。Angular:VUE:Angular中的事件绑定,有不同的事件名称,如ng-click、ng-mousedown、ng-mouseover等。在Vue中,有一个事件绑定属性:v-on。事件名称在描述绑定的字符串中指定。Angular:VUE:Angular和Vue之间还有其他明显的相似之处。但所有这些相似之处都是意料之中的,毕竟vue.js大量借鉴了Angular的精髓。语法差异尽管有如此多的相似之处,但两者的语法仍然存在显着差异。Angular框架必须使用TypeScript。并且Vue不强制使用TypeScript。Vue.js支持TypeScript的静态类型检查系统,但它的使用是可选的。Vue.js没有通用的代码编写方式,支持开发者自由选择编码风格和方式。Vue.js的学习曲线远没有Angular陡峭。选择Vue的开发者可以在一天内开始手写代码。所以可以利用Vue快速开发一个demo原型,并以此为基础进行迭代,加快开发进程。下面说说两者在语法上的区别,包括模块(Angular)、组件和指令(Vue)。Angular模块可以包含任何功能块,不一定是组件。而vue.js的组件就是组件化的逻辑。Angular指令通常比vue.js指令更复杂。Vue将指令和组件分开得更清楚。Vue.js指令只封装了DOM操作,而Angular指令可以满足更多用例。在Angular中,组件只是一个特定的指令。结论Angular和Vue.js都是Web应用程序开发的可行选择。在编写代码时,它们在本质上也很相似。Vue.js更轻量,而Angular更适合开发更复杂的应用。但是,很多Vue的企业用户证明,Vue在企业应用开发方面也做的不错。与Vue相比,Angular的主要缺点是它的大小、启动时间和内存占用。但是,随着应用程序复杂性的增加,Angular表行会更加稳定。
