前端框架
React/Vue 对比
共同点:
- 都是处理 UI 层框架;
不同点:
- 定位上看:Vue 是一个数据响应式框架,v-modal 可体现出它是一个 MVVM 框架(双向绑定)。React 强调单项数据流,需要手动
setState; - 语法层面:Vue 主要是
Template语法(Vue 也支持 jsx,目前用的人不多),React 则是JSX(all in js)。 - Vue3 和 React 都推出了 hooks。Vue3 是
compositionAPI。 - UI 更新逻辑:两者都有 DOM Diff。Vue 是双端 Diff 算法,React 则是“仅右移”的算法。Vue 中有
track,当更改某些响应式数据时,Vue可以数据依赖的组件并更新,引入 Diff 主要是为了提高Vue的渲染效率; - 社区:Vue 官方推出了很多周边工具,比如 Vue-Router、Vuex、Pinia 等,而 React 相关的工具基本都是第三方在维护。
DOM Diff
Tree Diff
- 将新旧两棵树逐层对比,找出哪些结点需要更新;
- 如果结点是组件就进行 Component Diff;
- 如果结点是标签就进行 Element Diff;
Component Diff
- 如果结点是组件,就先看组件类型;
- 类型不同直接替换(删除旧的);
- 类型相同则只更新属性;
- 然后深入组件做 Tree Diff(递归);
Element Diff
- 如果结点是原生标签,则看标签名;
- 标签名不同直接替换,相同只更新属性;
- 然后进入标签后代做 Tree Diff(递归)