一. 相似之处
- 它们都是前端优秀的UI库
- 使用 Virtual DOM快速渲染
- 提供了响应式 (Reactive) 和组件化 (Composable) 的视图组件。
- 都支持服务端渲染
- 将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。
二. 不同之处
- 性能方面
React 组件的状态有变化时,它会以该组件为根,重新渲染整个组件子树,需要使用PureComponent,或是实现shouldComponentUpdate(15)、getDerivedStateFromProps(16)方法进行优化
Vue 使得开发者不再需要考虑此类优化,从而能够更好地专注于应用本身。
- 数据的可变性
React 它是函数式的思想,把组件设计成纯组件,状态和逻辑通过参数传入,所以在react中,是单向数据流,推崇结合immutable来实现数据不可变。在setState之后会重新走渲染的流程,如果shouldComponentUpdate(15)返回的是true或getDerivedStateFromProps(16)返回的不是null,就继续渲染,如果返回了false,就不会重新渲染,PureComponent就是重写了shouldComponentUpdate,然后在里面作了props和state的浅层对比
Vue 它是响应式的思想,也就是基于是数据可变的,通过对每一个属性建立Watcher来监听,当属性变化的时候,响应式的更新对应的虚拟dom
渲染方式
React 他的思路是all in js,通过js来生成html,设计了jsx,通过js来操作css Vue 提供了渲染函数,同时也支持JSX,默认推荐的还是模板,任何合乎规范的 HTML 都是合法的Vue模板
- 声明方式
React 是类式的写法,api较少
Vue 是声明式的写法,通过传入各种options,api和参数较多
- 扩展功能方式
React 通过高阶组件来扩展
Vue 通过Mixins来扩展