一、相似之处
- 都将注意力几种保持在核心库,而将其他功能如路由和全局状态管理交给相关的库。
- 都有自己的构件工具,能让你得到一个根据最佳实践设置的项目模板
- 都是用了VirtualDOM(虚拟DOM)提高重绘性能
- 都有props的概念,允许组件间的数据传递
- 都鼓励组件化应用,将应用拆分成一个个功能明确的模块,提高复用性。
二、不同之处
1.数据流
Vue默认支持数据双向绑定,而React一直提倡单向数据流
2.虚拟DOM
Vue2.x 开始引入Virtual DOM ,消除了和React在这方面的差异,但是在具体的细节还是用各自的特点
Vue宣称可以更快的计算出Virtral DOM 的差异,但是由于他爱渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。
对于React而言,每当应用的状态树被改变时,全部组件都会重新渲染,当然,这可以通过PureComponent/shouldComponentUpdate 这个生命周期方法来进行控制,单vue将视为默认的优化
3.组件化
React与Vue最大的不同是模板的编写。
Vue鼓励你去写近似常规HTML的模板。写起来很接近标准HTML元素,只是多了一些属性。React推荐你所有的模板通过JavaScript 的语法扩展---jsx书写
具体来讲:
React中render函数是支持闭包特性的,所以我们import的组件在render中可以直接 调用,但是在vue中,由于模板中使用的数据都必须挂在this上进行一次中转,所以我们import一个组件完了之后,还需要components中在声明下。
4.监听数据变化的实现原理不同