本人从Angular2时代开始用,当时全国都没什么人敢碰Angular2,我们就靠着啃它源代码中的注释,熟悉了Angular2的用法,并在实用中,还给Angular2团队提交bug。

因此,这里提供给大家最实用的比较,帮助大家在Vue和Angular之间选择。

先说结论:用 vue + es6。不要考虑Angular,它有2个致命问题,导致它并不适合实用。

我们分几个关键方面来说:

* 功能上,vue其实和Angular几乎一模一样。

如果只看入门教程,很多人会觉得vue很简单,angular强大而复杂。但我是先学的Angular2,再发现vue的存在,所以我直接深入了vue的文档。

一旦深入就发现,vue其实提供了几乎完全一样的功能,当你要用到这些功能时,vue瞬间就会变得和Angular2~4一样复杂。

原本,vue都是基于es5,视觉上,还会觉得vue和angular4区别挺大。现在vue2.5开始支持typescript,你去看看那个组件编写方式,几乎就和angular4一模一样了。

* 学习曲线上,vue入门容易,深入下去和angular4几乎一样。

vue最大的成功之一,就在于他的文档由浅入深,不需要立马知道的信息,入门教程暂时不提,从而降低上手门槛。

而angular的教程,一上来就是cli, npm, typescript,一大堆东西砸到你面前,每个东西他都要提一大段,连组件的理念,都要讲半天,教程门槛,一下子就被拉高了。

以游戏打比方,level 1的你进入游戏,vue给你level2的对手,然后level4, 6, 8 逐渐提升。

而angular是,直接拉你到38级的boss面前,告诉你这就是你以后要面对的,并且讲一大堆,你需要做哪些准备。讲完了,让你现场练级,直接打倒这个boss,从1级瞬间跳到38级。

而vue之所以教程能如此简单,因为他基于es5,开头可以不提组件理念,不提typescript,照样能用。Vue的typescript支持,都没放在教程正文提,几乎算是在附录提了下。

因此,入门教程的复杂性,决定了angular的人气无论如何不可能和vue比。

* 运行速度上,差不多,可以无视区别。

两者的性能,都比 react 和 angular 1.x 好很多,而两者之间,虽然理论有差异,但用户角度很难区别,所以这个不用太多考虑。

* 运行库尺寸上,vue完胜,angular过于笨重。但vue现在也有越来越重的趋势。

angular压缩后168kb,真的太笨重了!而vue 早期压缩后不到50kb,但现在vue开始支持typescript之后,有越来越大的趋势,最新版压缩后已经到了89kb,也开始有点重了。

* 调试和维护上,angular比vue更难调试;vue比angular更难维护。

angular代码很规范,很好维护和审查,但它在控制台的报错信息太差了,经常看不出到底问题在哪,导致调试非常辛苦,有时候可以说是痛不欲生,尤其是,这个问题不是你可以解决的,除了提交建议,你没有什么好办法。

而vue基于es5的语法实在是很混乱,兼容es5看似让vue好上手,但用起来全是坑。光是那个{}套{},就晕死你。但这个问题,是可以靠使用es6规范回避掉一部分的。

另外,调试这个问题,由于angular用typescript+webpack封装,导致本来就很难调试了,控制台报错再差一点,真的很痛苦。

而vue在开发阶段,其实是可以直接用es6,而不用typescript和webpack的,这意味着,控制台报错将是最准确的原始出错信息,能够最快完成调试工作。这一点,angular是做不到的。

* 最后,开源库的丰富程度:vue更丰富,但更混乱,尤其是那些es5写的库。angular4少很多,但更清晰,没有es5~6的跨度问题。

vue的热门库、新开源库,很多陆续转为es6了,但更多库还没转。你有很高概率会面对那些库,而且vue存在从0.x到1.x再到2.x的迁移问题,所以你多少是要受点罪的。

而angular4其实并不热门,提到的人多,去用的人少得可怜,所以开源库也不多。你有很高的概率,需要去找普通js库,然后自己改造成angular4的组件。

-----------------

本人最终放弃了angular,关键原因在于:

难调试+笨重。

这两点几乎给angular判了死刑。本人在深知angular4的优点基础上,依然选择扔掉它。然而,es5这个大坑我们是不想再跳了,因此,vue+es6成了最完美的选择:

既享受了类似angular4的功能和规范,又避免了笨重和调试问题。

* 未来:理想情况是,两者区别会越来越小,最终感受不到区别。不理想情况是,angular被淘汰。

如今,一旦启用typescript,vue和angular的区别就真的很小了。

因此,如果哪天angular的调试信息更加准确有效,而且尺寸降下来(或vue尺寸继续加大),这两者的区别将会小到可以忽略。但如果angular做不到,则早晚要全面输给vue而被淘汰。

从前端的历史发展来看,新框架迅速流行,然后迅速被淘汰,周而复始。因此经验丰富的团队对前端框架都比较避讳,更愿意选择轻量的第三方库,而不选择大而全的框架。

你看react和angular今天很火,但react不是原生Html而是写模版,而angular大而全而笨重,都属于历史长河中很容易流行几年,然后被淘汰的框架类型。虽然他们有大公司支撑,生命周期会更长,但排除大公司因素,这种框架我们还是要尽量避免。

目前,我们判断,angular比较适合:公司内部项目,或面向对象团队转型全栈开发。

这种情况下,团队深知面向对象、代码规范的好处,并且没有es5标准的包袱,直接从typescript入门。虽然,调试的坑依然还在,但其他方面,则好很多。

不然,就像开头的结论那样:vue+es6,是最佳选择。别用es5,其中的苦,用过都知道。

原文发布时间为:2018年01月09日

原文作者:butaixianran

本文来源:开源中国 如需转载请联系原作者

实用比较,帮你决策到底选择Vue还是Angular4、5相关推荐

  1. 新华三、华为、思科认证,到底选择哪一个?

    在计算机网络行业,大家普遍认同的认证就是新华三认证(H3C).华为认证和思科认证.这三个认证证书,不管拿到哪一个,都会被企业所认可.但是小伙伴们在选取考试认证的时候,总会纠结到底该选哪一个! 新华三. ...

  2. SAP QM 执行事务代码QS51维护使用决策的选择集,系统报错 – Transaction no longer valid for catalog ‘3’ -

    SAP QM 执行事务代码QS51维护使用决策的选择集,系统报错 – Transaction no longer valid for catalog '3' - 执行事务代码QS51,试图为工厂NMD ...

  3. 如何用 Python 和机器学习帮你决策?

    还是不贷:如何用 Python 和机器学习帮你决策? 本文作者:AI研习社 2017-07-04 11:19 导语:用机器学习帮你决策贷款. 雷锋网按:本文作者王树义,原载于微信公众号玉树芝兰(nkw ...

  4. 服务器96g运行内存,别被坑了,2019入手小米9到底选择6G运存还是8G?看完你就懂了!...

    别被坑了,2019入手小米9到底选择6G运存还是8G?看完你就懂了! 作为现在最基本的通讯娱乐工具,手机是日常必不可少的一部分,手机行业现在真的是如日中天,每天我们都可以看见线下手机店里有大量的顾客在 ...

  5. 姚班和北大计算机哪个更牛,北大图灵班与清华姚班到底选择哪一个?

    原标题:北大图灵班与清华姚班到底选择哪一个? 北京大学新开的"图灵班"!与清华大学"姚班"形成竞争之势.清北学堂信息学金牌教研团今天给您整理看看北大图灵班和清华 ...

  6. 编程语言到底选择哪种要好_您应该选择哪种编程语言?

    编程语言到底选择哪种要好 介绍 (Introduction) Picking the right programming language for you to learn next is alway ...

  7. android应用程序开发_Kotlin与Flutter:Android跨平台应用程序开发,到底选择哪个?...

    移动互联时代--应用为王 移动互联网时代,很难想象没有应用程序的生活.从我们睁眼醒来的那一刻到我们真正睡觉的那一刻,无数的应用程序围绕着我们.根据统计,国人平均在移动设备上花费4个小时以上! 而这其中 ...

  8. 一文帮你理解模型选择方法:AIC、BIC和交叉验证!

    一文帮你理解[模型选择方法]:AIC.BIC 和交叉验证! 本文先讲透模型选择的基本思想,再逐一叙述几种比较典型和常用的模型选择方法,希望可以帮助你理解. 一.模型选择的基本思想 模型选择的核心思想就 ...

  9. 干货分享新华三、华为、思科认证,到底选择哪一个?

    在计算机网络行业,大家普遍认同的认证就是新华三认证(H3C).华为认证和思科认证.这三个认证证书,不管拿到哪一个,都会被企业所认可.但是小伙伴们在选取考试认证的时候,总会纠结到底该选哪一个! 新华三认 ...

最新文章

  1. AI面试官也太好骗了吧!
  2. 测量ATMEGA8单片机IO口的输入输出内阻
  3. 目录中带.造成文件上传验证问题
  4. mysql数据库两表建立联系_在MySQL数据库建立多对多的数据表关系
  5. Android 自定义仪表盘
  6. SQL 注入漏洞(二)之 mysql 注入的相关知识
  7. 系统自动校时后发广播android,校园定时播放软件
  8. linux下配置内网ip
  9. 计算机怎么设置定时音乐,怎么让电脑自动开机播放音乐教程 以及自动关机计划任务设置...
  10. R语言(五) Plotly绘图基本命令介绍
  11. Q版京剧脸谱来喽——刀马旦
  12. 四轴无人机那些事 MiniFly源码分析 2 系统及电源分析
  13. python创建txt文件并写入-python中如何创建一个txt文件
  14. 老师,强奸你时别叫痛(转载)
  15. 电脑msvcr120.dll文件丢失(一键修复方法)
  16. make menuconfig缺少ncurses
  17. 【高并发】多线程之无锁队列
  18. Vue背景图片打包上线后出错问题解决
  19. Python3 + requests + unittest接口测试
  20. win10自动修复电脑无法正常启动

热门文章

  1. c++ 如何给 “运行中“ 的线程传递数据;
  2. 概率论-4.2中心极限定理(待补充)
  3. [BUUCTF-pwn]——picoctf_2018_shellcode
  4. 递归算法——汉诺塔问题
  5. 使用python自己搭建一个简单的BP神经网络
  6. Struts2内置拦截器的简要介绍
  7. JAX-WS Web Service
  8. [远航笔记流水账]易大漠多线程初级教程086(1-3)
  9. Eugeny and Array(水题,注意题目描述即可)
  10. 洛谷 3398 仓鼠找sugar 【模板】判断树上两链有交