相同点:
- 都是通过 Virtual DOM (虚拟 DOM)来更新操作,Virtual DOM是一个映射真实DOM的JavaScript对象 ,所以改变一个JavaScript对象要比改变一个真实的DOM花销要小的多
- 都推崇组件化,将应用拆分成一个个功能明确的模块,每个模块之间通过合适的方式进行通信
- 都拥有props这个属性,用于父组件往子组件传送数据
- 都拥有自己的构建工具,React可以使用Create React App (CRA),而Vue对应的则是vue-cli
- 都有自己配套框架,本身专注于UI层,其他的功能如路由、状态管理等都交由同伴框架进行处理。Vue的核心团队维护着vue-router和vuex,它们都是作为官方推荐的存在。而React的react-router和react-redux则是由社区成员维护,它们都不是官方维护的。
不同点:
- vue是基于数据可变的,通过对每一个属性建立Watcher来监听,当属性变化的时候,响应式的更新对应的虚拟dom,而React则是基于数据不可变,React在setState之后会重新走渲染的流程,如果shouldComponentUpdate返回的是true,就继续渲染,如果返回了false,就不会重新渲染
- Vue推荐使用模板语法,一方面是更贴近于常规的html模板,而React则推荐使用特殊的jsx语法进行书写,但是Vue在技术上也支持render函数和JSX,但只是不是默认的而已
- React中的state对象是不可变的,意味着它不能被直接改变,你需要使用
setState()
方法去更新状态,在Vue中,state并不是必须的,数据由data属性进行管理,则并不需要用什么方法去更新状态,直接更改就行