- diff 算法
- 拿新的虚拟dom来和旧的虚拟dom做对比(使用diff算法)。得到需要更新的地方之后,更新内容
这样的话,就能大量减少真实dom的操作,提高性能 - 第一种情况:元素(标签)变了,直接这块销毁重建
- 第二种情况:元素没有变,属性或内容变了,修改属性或内容
- 第三种情况:当使用v-for遍历的时候,存在二种情况
- 没有key的时候或者key是索引index的时候,它会采用就地复用(就地更新)原则,在顺序上位置是同一个索引就会被认为是同一个元素,正常情况下效率确实会很高,但是当你采用unshift,sort,reverse这些破坏顺序的时候,就会出现不必要的元素也要去更新内容或属性
- 有key的时候,key就是一个唯一的标识,就像人的身份证号一样的,有了这个之后,哪怕是顺序被打乱了,但是vue知道只要key一样就是同一个元素,就不会出现去更新旧的元素的情况
- 拿新的虚拟dom来和旧的虚拟dom做对比(使用diff算法)。得到需要更新的地方之后,更新内容
- 虚拟dom作用除了可以实现高效更新(数据变了的时候视图更新效率更高),还可以实现跨平台
- 一套代码,可以生成不同的平台的最终代码
手里面只有一个车的图纸设计稿(对这个东西长什么样子描述) 如果大人来了 造一个真的车 小孩来 搞一个模型
虚拟dom本质就是一个普通的js对象,用来描述这块长什么样子 跨平台
- 如果是html浏览器 渲染成真实的DOM
- 如果是android,渲染成android对应的UI代码
- 如果是ios,渲染成对应IOS代码