跳到主要内容

认识

一、认识


Vue2

Vue3

二、特点


2.1 基于 MVVM 思想

Vue.js 的一个核心思想是数据驱动。所谓数据驱动, 是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作DOM,而是通过修改数据; 或者数据更新驱动视图的变化。它相比我们传统的前端开发。如使用jQuery等前端库直接修改DOM,大大简化了代码量。特别是当交互特别复杂的时候, 只关心数据的修改会让代码的逻辑变得非常清晰。我们所有的逻辑都是对数据的修改,而不用触碰DOM

三、Vue vs React


1. 编译方式: Vue 是一个编译时 + 运行时的前端框架, Vue 通过编译 Template 得到虚拟 DOM 渲染函数, 可以在编译的时候进行非常好的性能优化, 比如动态标记靶向更新静态提升(静态节点、动态节点中的静态属性)、预字符串化内联函数缓存等; React 是纯运行时前端框架, 在运行前, 已经将 JSX 全部转换为 ReactElement 虚拟 DOM, 在运行中没有机会进行编译优化。

2. 响应式特性: Vue 通过响应式依赖跟踪,在默认的情况下可以做到只进行组件树级别的更新计算,而默认下 React 是做不到的(据说 React 已经在进行这方面的优化工作了)

3. 虚拟 DOM 结构: React 为了解决更新的时候进行过多计算的问题引入了时间分片, 因此, ReactVNode Fiber 中存储了诸多相关渲染方面的信息

4. 虚拟 DOM 比对算法: 对比算法: Vue2Vue3 都使用了双端对比算法,而 ReactFiber 由于是单向链表的结构,所以在 React 不设置由右向左的链表之前,都无法实现双端对比

5. 虚拟 DOM 比对优化: 在 Diff 的时候,Vue2 是判断如果是静态节点则跳过过循环对比,而 Vue3 则是把整个静态节点进行提升处理,Diff 的时候是不过进入循环的,所以 Vue3Vue2Diff 性能更高效。React 是纯运行时前端框架, 在运行前, 已经将 JSX 全部转换为 ReactElement 虚拟 DOM, 在运行中没有机会进行编译优化, 所以无法进行静态节点分析的,因此 React 在对静态节点处理这一块是要逊色的。