Vue和React的区别【汇总】

156 阅读2分钟

共同点

  1. 虚拟DOM
  2. 提供响应式和可组件性的视图组件
  3. 路由及状态管理借助第三方库

不同点

1.API

vue的API比较多,上手简单

ReactAPI较少,函数式编程

2.性能

在react中,当组件状态改变时,它会触发整个子组件数重新渲染,以根组件作为渲染基点。为了避免不必要的子组件重新渲染,你需要使用 useMemo/pureComponent等其操作减少加载 。

在Vue中,一个组件在渲染期间依赖于自动追踪,因此系统知道提前预判哪一个组件需要渲染当组件状态发生改变时,不需要注意嵌套的组件。

3.template / JSX 的使用差异

写法差异

React更偏向于js写法,而vue内有各种指令去实现功能 标签展示 react直接借助数据,vue需要 v-if 列表展示 map 和 v-for的使用

vue3也引入了JSX

4.css的使用

vue 直接使用或者引入 React CSS-IN-JS

5.状态管理库

均采用第三方库

React内采用函数式编程,Redux内也是函数式编程,函数式编程的特点是不可变性。 React + MobX工作流可以被认为是一个更加详细的Vue

vue内的Vuex和pinia等

6.数据流

vue数据实现了双向绑定 v-model

react中数据是单向数据流 useState/setState

7.通信

相同的:propsref(具体用法不同) 、三方库(vue[vuex,pinia] react[redux,mobx]) 不同的:react上下文

vue组件通信之间通信方式更多一些

8.虚拟DOM

vue 支持指令是因为背后有 vue-template-compiler 这个编译器的支持,把带有指令的视图模板转化成 AST 抽象语法树,进一步转化成虚拟 DOM。

React在初始加载时会先生成一个Fiber树(旧的virtual DOM树),然后后续更新会生成一个新的 virtual DOM树,二者进行对比

React 采用了 Fiber(双向链表)的数据结构,作为 “协调”(Diff)运算的基础数据。React 背后还提供了强大的 react-reconcilerscheduler 库实现 Fiber 链表的生成、协调与调度。

9.响应式

vue双向数据绑定,react是单向数据流,数据自上而下

vue2 的响应式原理是使用了 Object.defineProperty 进行了数据劫持,数据劫持发生 vue 组件的创建阶段

vue3 的响应式原理是使用了 Proxy,颗粒度精细

React内是通过受控组件实现响应式

10.Next.js vs Nuxt.js

参考链接:

【由浅到深】聊聊 Vue 和 React 的区别,看看你在哪个段位