频繁且复杂的dom操作通常是前端性能瓶颈的产生点,Vue提供了虚拟dom的解决办法
(1) 提供一种方便的工具,使得开发效率得到保证
(2) 保证最小化的DOM操作,使得执行效率得到保证
- 根据虚拟dom树最初渲染成真实dom
- 当数据变化,或者说是页面需要重新渲染的时候,会重新生成一个新的完整的虚拟dom
- 拿新的虚拟dom来和旧的虚拟dom做对比(使用diff算法)。得到需要更新的地方之后,更新内容
- 如果一个节点发生了改变 那么他下面的所有子元素和子节点就不用去做对比 直接全部更新这个节点,
- 如果更新的内容插在了原来的内容里 比如说下面的图 原来的dom树中有abcde
后来插入了f进来 一开始ab两个节点不用动直接采用虚拟dom中的,不用更新,而c开始 他的位置被f所占 所以会经历 卸载c 装载f 卸载d 装载c 卸载e 装载d 装在e这样的更新 ,这样的方法过于粗暴
如果为元素增加key后,Vue就能根据key,直接找到具体的位置进行操作,效率比较高
像这样给每一个元素加上唯一的key值 这样vue 就会根据这唯一的索引直接找到具体的位置进行操作 不会进行连续装载卸载的操作 既能提高性能,也能提高效率