相同点:
1、都使用虚拟 DOM【Virtural DOM】
Vue与React都使用了 Virtual DOM + Diff算法, 不管是Vue的Template模板+options api 写法, 还是React的Class或者Function写法,最后都是生成render函数,而render函数执行返回VNode(虚拟DOM的数据结构,本质上是棵树)
Vue和React通用流程图:
2、都支持服务器端渲染
3、都有响应式和组件化的特点
不同点:
1、组件实现不同
Vue鼓励写近似常规HTML的模板。写起来很接近标准 HTML元素,只是多了一些属性;即 html,css,JS 写在同一个文件(vue也支持JSX写法)。
React推荐你所有的模板通用JavaScript的语法扩展——JSX书写;也就是把 HTML 和 CSS 全都写进 JavaScript 中,即 all in js。
2、数据流
Vue是单向数据流但它默认支持数据双向绑定
React一直提倡单向数据流
3、性能|响应式原理不同
Vue宣称可以更快地计算出Virtual DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。
- Vue依赖收集,自动优化,数据可变。
- Vue递归监听data的所有属性,直接修改。
- 当数据改变时,自动找到引用组件重新渲染。
对于React而言,每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过 PureComponent/shouldComponentUpdate这个生命周期方法来进行控制,但Vue将此视为默认的优化
了解部分
【4】构建工具
两者都有自己的构建工具:
●React ==> Create React APP
●Vue ==> vue-cli
【5】跨平台
●React ==> React Native
●Vue ==> Weex