1. 相同点
都有组件化开发和Virtual Dom
都支持props进行父子组件间数据的通信
都支持数据驱动视图,不直接操作真实的DOM,更新状态数据界面就自动更新
都支持服务器渲染
都有支持native的方案,React的React Native,Vue的Weex
组件化:提高界面功能编码的复用
虚拟DOM:提高程序的运行效率
props:标签属性
数据驱动:只要更新状态数据,对应的界面就会自动变化
native:跨平台的原生应用
2. 不同点
- 数据绑定:Vue实现了数据的双向绑定;React数据流动是单向的。
- 组件写法:React推荐的做法是JSX,也就是把HTML和CSS全都写进JS里面,有一个概念叫做all in js;Vue有一个概念叫模板,推荐的做法是webpack+vue+loader的单文件组件格式,即html,js,css写在同一个文件。
- 状态变化:state对象在React应用中不可变,需要用setState方法更新状态;在Vue中state的对象不是必须的,数据由data属性在Vue对象中管理。
- Virtual Dom:Vue会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树;对于React而言,每当应用的状态被改变的时候,全部组件都会重新渲染,所以React中需要shouldComponentUpdate这个生命周期函数方法来控制。
- React严格上只针对MVC的view层;Vue则是MVVM模式。