前端面经
vue 中的 for循环key 到底有什么⽤?
- key 是给每⼀个 vnode 的唯⼀ id,依靠 key,我们的 diff 操作可以更准确、更快速 (对于简单列表⻚渲染来说 diff 节点也更快,但会产⽣⼀些隐藏的副作⽤,⽐如可能不会产⽣过渡效果,或者在某些节点有绑定数据(表单)状态,会出现状态错位。)
- diff 算法的过程中,先会进⾏新旧节点的⾸尾交叉对⽐,当⽆法匹配的时候会⽤新节点的 key 与旧节点进⾏⽐对,从⽽找到相应旧节点。
- 更准确 : 因为带 key 就不是就地复⽤了,在 sameNode 函数 a.key === b.key 对⽐中可以避免就地复⽤的情况。所以会更加准确,如果不加 key,会导致之前节点的状态被保留下来,会产⽣⼀系列的bug。
vue中route 和 router 的区别是什么?
- route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参
数。 - router是“路由实例对象”,包括了路由的跳转⽅法(push、replace),钩⼦函数等。