在现在,Weex 还在积极发展,成熟度也不能和 ReactNative 相抗衡。但是,Weex的发展是由世界上最大的电子商务企业的需求在驱动,Vue 团队也会和 Weex 团队积极合作确保为开发者带来良好的开发体验。
MobX
Mobx 在 React 社区很流行,实际上在Vue也采用了几乎相同的反应系统。在有限程度上,React + Mobx 也可以被认为是更繁琐的 Vue,所以如果你习惯组合使用它们,那么选择 Vue 会更合理。
Angular 1
Due的一些语法和Angular的很相似(例如 v-if vs ng-if)。因为Angular是Vue早期开发的灵感来源。然而,Augular中存在许多问题,在Vue中已经得到解决。
复杂性
在 API 与设计两方面上 Vue.js 都比 Angular 1 简单得多,因此你可以快速地掌握它的全部特性并投入开发。
灵活性和模块化
Vue.js 是一个更加灵活开放的解决方案。它允许你以希望的方式组织应用程序,而不是在任何时候都必须遵循 Angular 1 制定的规则,这使让Vue能适用于各种项目。我们知道把决定权交给你,是非常必要的,就是是为什么提供Webpack template,让你用几分钟,去选择是否用高级特性,比如热模块加载、linting 、
Css extraction 等等。
数据绑定
Angular 1 使用双向绑定,Vue在不同组件间强制适用单向数据流。这使应用中的数据流清晰易懂。
指令与组件
在 Vue 中指令和组件分得更清晰。指令只封装 DOM 操作,而组件代表一个自给自足的独立单元 —— 有自己的视图和数据逻辑。在 Angular 中两者有不少相混的地方。
性能
Vue.js 有更好的性能,并且非常非常容易优化,因为它不使用脏检查。
在Angular 1中,当 watcher 越来越多时会变得越来越慢,因为作用域内的每一次变化,所有 watcher 都要重新计算。并且,如果一些 watcher 触发另一个更新,脏检查循环(digest cycle)可能要运行多次。 Angular 用户常常要使用深奥的技术,以解决脏检查循环的问题。有时没有简单的办法来优化有大量 watcher 的作用域。
Vue.js 则根本没有这个问题,因为它使用基于依赖追踪的观察系统并且异步列队更新,所有的数据变化都是独立地触发,除非它们之间有明确的依赖关系。
有意思的是,Angular 2 和 Vue 用相似的设计解决了一些 Angular 1 中存在的问题。
Angular 2
Augluar 2完全是一个全新的框架。例如,它具有优秀的组件系统,并且许多实现已经完全重写,API也完全改变了。
TypeScript
Angular 1面向的较小的应用程序,Angular 2已转移焦点,面向的是大型企业应用。TypeScript被引用,这对那些喜欢用Java或者C#等类型安全的语言的人是非常有用的。
Vue也适合企业应用,也可以使用TypeScript来支持官方类型和用户贡献的类型,尽管这是可选的。
尺寸和性能
在性能方面,这两个框架都是非常快。但是如果你查看第三方参照,就可以得出 Vue 2 比 Angular2 要快的。
在尺寸方面,虽然 Angular 2 使用 tree-shaking 技术和编译技术能使代码尺寸减小。
即便包含编译器和全部功能 Vue2(23kb)比起 Angular 2(50kb)还是小的多。但是要注意,用 Angular 的 App 的尺寸缩减是用 tree-shaking 移除了那些框架中没有用到的功能,当随着引入功能的增多,尺寸会越来越大。
灵活性
Vue 官方提供了构建工具,但没限制你如何构建。有人喜欢用统一的方式构建,也有很多开发者喜欢这种灵活自由的方式。
学习曲线
开始使用Vue,你使用的是熟悉的HTML、符合ES5规则的JavaScript(也就是纯JavaScript)。有了这些基本的技能,你可以快速地掌握它(指南)并投入开发 。
Angular 2 的学习曲线是非常陡峭的。即使不包括TypeScript,它们开始指南中所用的就有ES2015标准的JavaScript,18个NPM依赖包,4个文件和超过3千多字介绍,这一切都是为了完成个Hello World。而Vue's Hello World就非常简单。
Ember
Ember 是一个全能框架。它提供大量的约定,一旦你熟悉了它们,开发会很高效。不过,这也意味着学习曲线较高,而且不灵活。在框架和库(加上一系列松散耦合的工具)之间权衡选择。后者更自由,但是也要求你做更多的架构决定。
也就是说,最好比较 Vue.js 内核和 Ember 的模板与数据模型层:
Vue 在普通 JavaScript 对象上建立响应,提供自动化的计算属性。在 Ember 中需要将所有东西放在 Ember 对象内,并且手工为计算属性声明依赖。
Vue 的模板语法可以用全功能的 JavaScript 表达式,而 Handlebars 的语法和帮助函数语法相比之下非常受限。
在性能上,Vue 甩开 Ember 几条街,即使是 Ember2.0 的最新Glimmer引擎。Vue自动批量更新,Ember 当性能关键处需要手动管理。
Knockout