两个组件的原理偶准备用比较的方式来了解下,毕竟通过比较才知道各有各的优势吧。
共同点
- 都使用虚拟dom。
- 提供了响应式和组件化的视图组件。
- 注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。
区别
- 监听数据变化的实现原理不同
Vue通过getter/setter以及一些函数的劫持,能精确知道数据变化,不需要特别的优化就能达到很好的性能。
React默认是通过比较引用的方式进行的,如果不优化(PureComponent/shouldComponentUpdate)可能导致大量不必要的VDOM的重新渲染。
2.数据流的不同
大家都知道Vue中默认是支持双向绑定的。在Vue1.0中大家可以实现两种双向绑定:
父子组件之间,props可以双向绑定
组件与DOM之间可以通过v-model双向绑定。
在Vue2.x中去掉了第一种,也就是父子组件之间不能双向绑定了(但是提供了一个语法糖自动帮你通过事件的方式修改),并且Vue2.x已经不鼓励组件对自己的props进行任何修改了。
所以现在大家只有组件<–>DOM之间的双向绑定这一种。
然而React从诞生之初就不支持双向绑定,React一直提倡的是单向数据流,他称之为onChange/setState()模式。
3.HoC和mixins
在Vue中大家组合不同功能的方式是通过mixin,而在React中大家通过HoC(高阶组件)。
4.组件通信的区别
5.模板渲染方式的不同
React是通过JSX渲染模板
Vue是通过一种拓展的HTML语法进行渲染