react和vue有许多相似之处,他们都有:
1.使用虚拟DOM
2.提供了响应式(reactive)和组件化(composable)的视图组件
3.将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库
4.react更丰富的生态系统
性能
vue的虚拟DOM实现相对更为轻量一些。
优化
在react应用中,当某个组件的状态发生变化时,它会以该组件为根,重新渲染整个组件子树
在VUE应用中,组件的依赖是在渲染过程中自动追踪的,所以系统能精确知晓哪个组件确实需要被重渲染,VUE这个特点使得开发者不再需要考虑此类优化,从而能够更好的专注于应用本身。
HTML&CSS
在react中,一切都是javascript,不仅仅时html可以用jsx表达,页可以将css纳入javascript中处理,这类有其优点,
JSX VS Templates
在react中,所有组件渲染功能依靠JSX,JSX是使用xml语法编写javascript的一种语法糖
JSX优势:
可以使用完整的编程语言javascript功能来构建你的视图页面,比如你可以使用临时变量,js自带的流程控制,以及直接引用当前JS作用域中的值等等
开发工具对JS的支持相比现在有可用的其它VUE模块还时比较先进的,比如linting,类型检查,编辑器的自动完成。
规模
向上扩展
VUE和React都提供了强大的路由来应对大型应用。react社区在状态管理方面非常有创新精神(比哦如flux,redux),而这些状态管理模式甚至redux本身页可以非常容易集成在VUE应用中,VUE更进一步地采用了这种模式(Vuex)
向下扩展
react学习曲线陡峭需要知道JSX,ES2015,构建系统。VUE向上扩展好比react一样,VUE向下扩展就类似于jquery
angularJS VS VUE
复杂性
在API与设计两方面上VUE.JS都比angularJS简单得多
灵活性和模块化
Vue.js 是一个更加灵活开放的解决方案。它允许你以希望的方式组织应用程序,而不是在任何时候都必须遵循 AngularJS 制定的规则,这让 Vue 能适用于各种项目。我们知道把决定权交给你是非常必要的。
这也就是为什么我们提供 webpack template,让你可以用几分钟,去选择是否启用高级特性,比如热模块加载、linting、CSS 提取等等。
数据绑定
指令与组件
在 Vue 中指令和组件分得更清晰。指令只封装 DOM 操作,而组件代表一个自给自足的独立单元——有自己的视图和数据逻辑。在 AngularJS 中两者有不少相混的地方。
Vue 有更好的性能,并且非常非常容易优化,因为它不使用脏检查。
在 AngularJS 中,当 watcher 越来越多时会变得越来越慢,因为作用域内的每一次变化,所有 watcher 都要重新计算。并且,如果一些 watcher 触发另一个更新,脏检查循环 (digest cycle) 可能要运行多次。AngularJS 用户常常要使用深奥的技术,以解决脏检查循环的问题。有时没有简单的办法来优化有大量 watcher 的作用域。
Vue 则根本没有这个问题,因为它使用基于依赖追踪的观察系统并且异步队列更新,所有的数据变化都是独立触发,除非它们之间有明确的依赖关系。
有意思的是,Angular 和 Vue 用相似的设计解决了一些 AngularJS 中存在的问题。
AngularJS 使用双向绑定,Vue 在不同组件间强制使用单向数据流。这使应用中的数据流更加清晰易懂。