1. 首页
  2. 前端

Vue与angularJS框架的比较及选择推荐

Vue与AngularJS (Angular 1)

Vue 的一些语法和 AngularJS 很相似 (例如 v-if vs ng-if)。因为 AngularJS 是 Vue 早期开发的灵感来源,而Vue是在AngularJS的基础之上,基于AngularJS中存在的缺点进行借鉴和完善。AngularJS 中存在的许多问题,在 Vue 中已经得到了完美解决。

#复杂性

从API与设计思想两方面上,Vue.js 都比 AngularJS 简直观得多,因此你可以快速地掌握它的全部特性并投入开发。而AngularJS的业务比较复杂,要掌握并投入使用它,还需要很漫长的阶段性学习。

#灵活性和模块化

Vue.js 是一个更加灵活开放的解决方案。它允许你以希望的方式组织应用程序,而不是在任何时候都必须遵循 AngularJS 制定的规则,这让 Vue 能适用于各种项目。我们知道把决定权交给你是非常必要的。

这也就是为什么我们提供 webpack template,让你可以用几分钟,去选择是否启用高级特性,比如热模块加载、linting、CSS 提取等等。

#数据绑定

AngularJS 使用双向绑定,Vue也有数据的双向绑定,但在不同组件间强制使用单向数据流。这使应用中的数据流更加清晰易懂。

#指令与组件

在 Vue 中指令和组件分得更清晰。指令只封装 DOM 操作,而组件代表一个自给自足的独立单元——有自己的视图和数据逻辑。在 AngularJS 中两者有不少相混的地方。

#性能

Vue 有更好的性能,并且非常容易优化,因为它不使用脏检查。

在 AngularJS 中,当 watcher 越来越多时会变得越来越慢,因为作用域内的每一次变化,所有 watcher 都要重新计算。并且,如果一些 watcher 触发另一个更新,脏检查循环 (digest cycle) 可能要运行多次。AngularJS 用户常常要使用深奥的技术,以解决脏检查循环的问题。有时没有简单的办法来优化有大量 watcher 的作用域。

Vue 则根本没有这个问题,因为它使用基于依赖追踪的观察系统并且异步队列更新,所有的数据变化都是独立触发,除非它们之间有明确的依赖关系。

意思是,Vue用相似的设计解决了一些 AngularJS 中存在的问题。

Vue与angularJS框架的比较及选择推荐

Vue与Angular (原本的 Angular 2)

我们将新的 Angular 独立开来讨论,因为它是一个和 AngularJS 2 完全不同的框架。例如:它具有优秀的组件系统,并且许多实现方式已经完全重写,API 也完全改变了。

#TypeScript

Angular 事实上必须用 TypeScript 来开发,因为它的文档和学习资源几乎全部是面向 TS 的。TS 有很多好处——静态类型检查在大规模的应用中非常有用,同时对于 Java 和 C# 背景的开发者也是非常能提升开发效率的。

然而,并不是所有人都想用 TS——在中小型规模的项目中,引入 TS 可能并不会带来太多明显的优势。在这些情况下,用Vue 会是更好的选择,因为在不用 TS 的情况下使用 Angular 会很有挑战性。

最后,虽然Vue和TS的整合可能不如 Angular 那么深入,我们也提供了官方的类型声明和 组件装饰器,并且知道有大量用户在生产环境中使用Vue + TS 的组合。我们也和微软的 TS / VSCode 团队进行着积极的合作,目标是为 Vue + TS 用户提供更好的类型检查和IDE开发体验。

#大小和性能

在性能方面,这两个框架都非常的快,我们也没有足够的实际应用数据来下一个结论。如果你一定想看些数据的话,你可以参考这个第三方跑分。单就这个跑分来看,Vue似乎比 Angular要更快一些。

在大小方面,最近的 Angular 版本中在使用了 AOT 和 tree-shaking 技术后使得最终的代码体积减小了许多。但即使如此,一个包含了Vuex + Vue Router的Vue项目(30kB gzipped)相比于使用了这些优化的 angular-cli 生成的默认项目尺寸 (~130kB) 还是要小的多。

#灵活性

Vue 相比于 Angular 更加灵活,Vue官方提供了构建工具来协助你构建项目,但它并不限制你去如何组织你的应用代码。有人可能喜欢有严格的代码组织规范,但也有开发者喜欢更灵活自由的方式。

#学习曲线

要学习 Vue,你只需要有良好的 HTML 和 JavaScript 基础。有了这些基本的技能,你就可以非常快速地通过阅读指南并投入开发。

Angular 的学习曲线是非常陡峭的——作为一个框架,它的 API 面积比起 Vue 要大得多,且API文档也不够清晰,你也因此需要理解更多的概念和阶段性的学习才能开始有效率地工作。当然,Angular 本身的复杂度是因为它的设计目标就是只针对大型的复杂应用;但不可否认的是,这也使得它对于经验不甚丰富的开发者相当的不友好,且初学时相当困难。

#用户数量

在git官网的统计中,选择使用Vue开发的月用户使用量是71278,Angular开发的月用户使用量是29035,从数字来看,Vue远大于Angular用户。

#发展方向

Vue是2016年以来增长最为迅速的JS框架。Vue是一个“直观,快速和可组合的MVVM用于建立交互界面。”它已经相当成功。在2016年,第2版发布了。

使用Vue的公司有阿里巴巴,百度,Expedia,任天堂,GitLab --还有一些小项目清单可在madewithvuejs.com找到。

近几年,曾经很多使用Angular开发的技术人员转向了对Vue的使用,促使Vue框架使用者越来越多,再加之Vue的一些自身优势,将来也是个很好的发展趋势。

另外Vue-cli3.0在2018年1月30日,一个alpha状态面向全球公布,这也将是一个历史性的飞跃,更多关于Vuejs的新闻请关注官网https://news.vuejs.org

Vue与angularJS框架的比较及选择推荐

总之,学习Vue,将是一个不错的选择,在将来vue将也是一个趋势!

更多关于Vue-CLI 3的技术,请关注本博客!

原创文章,作者:Ferrycoln,如若转载,请注明出处:https://ms200.cn/archives/183

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

在线咨询:点击这里给我发消息

邮件:499661635@qq.com.com

工作时间:周一至周五,9:30-18:30

QR code