虚拟DOM工作流程(vue/React)
vue
- 根据模板 ->创建虚拟dom(jsx)
- render函数渲染jsx -> 虚拟对象模型
- 在mounterd显然真实dom
- Data选项数据改变时
- 再一次生成vdom
- 通过diff算法【使用js进行比较】比对生成patch补丁对象
- 根据patch补丁对象重新渲染真实dom
React
- 根据模板 -> vdom [jsx]
- render渲染jsx -> 虚拟dom对象模型
- 在componentDidmount渲染真实dom
- 当data发生改变时
- 再一次生成vdom
- 通过 React Filber 【React 16版本以上使用】算法进行比较生成patch补丁对象
- 根据patch补丁对象重新渲染真实dom
diff算法
我们先根据真实DOM生成一个虚拟 DOM,当虚拟DOM某个节点的数据改变后会生成一个新的Vdom,然后Vdom和真实DOM作对比,发现有不一样的地方就直接修改在真实的DOM上。
filber算法
filber 算法就是一一分片,把一个耗时长的任务分成很多小片,每一个小片运行时间很短,虽然总时间依然很长,但是在小片执行完之后,都给其他任一个务执行的机会,这样线程就不会被独占了,其他任务依然有运行的机会