一、数据是不是可变的
1. React是单向数据流,推崇结合immutable来实现数据不可变,在setState之后会重新走渲染的流程
Vue的思想是响应式的,是数据双向绑定,通过对每一个属性建立Watcher来监听,当属性变化时,响应式的更新对应的虚拟dom
为什么 React 不精确监听数据变化呢?这是因为 Vue 和 React 设计理念上的区别,Vue 使用的是可变数据,而React更强调数据的不可变。所以应该说没有好坏之分,Vue更加简单,而React构建大型应用的时候更加棒。
2. 优缺点:React的性能优化需要手动去做,而vue的性能优化是自动的。但是vue的响应式机制也有问题,当state特别多的时候,watcher也会特别多,会导致卡顿,所以大型应用(状态特别多的)一般都用react,更加可控
二、React通过js来操作一切,Vue用自己的模板引擎
1. react的思路是all in js, 通过js来生成HTML,所以设计了jsx,还有通过js来操作css,社区的styled-component,jss等
2. vue是把html,css,js组合到一起,用各自的处理方式,vue有单文件组件,可以把html、css、js写到一个文件中,html提供了模板引擎来处理
三、react都是类式的组件写法,vue是声明式写法(在vue3.0支持类式写法之后就可以去掉了)
1. react是类式的写法,api很少
2. vue是声明式写法,通过传入各种options,api和参数都很多
3. 所以react结合Typescript更容易一起写,vue稍微复杂
四、Vuex和Redux的区别
1. Redux使用的是不可变数据,所以每次都是用新的state替换旧的state
2. Vuex的数据是可变的,所以Vuex是直接修改原数据
3. Redux 在检测数据变化的时候,是通过 diff 的方式比较差异的,而Vuex其实和Vue的原理一样,是通过 getter/setter来比较的