Vue优化方式
- v-if 和 v-show 使用
- Object.freeze()方式冻结 data 中的属性,从而阻止数据劫持
- 组件销毁的时候会断开所有与实例联系,但是除了 addEventListener,所以当一个组 件销毁的时候需要手动去 removeEventListener
- 元素已被删除:一旦一个元素被从DOM树中移除,所有绑定到该元素的事件监听器也会被自动清理掉,尤其是那些使用 addEventListener 添加的监听器。由于事件监听器和元素的生命周期相关,元素销毁后,事件监听器就不再有任何有效的目标对象,因此也不再起作用。
- 图片懒加载
- 路由懒加载
- 为减少重新渲染和创建 dom 节点的时间,采用虚拟 dom
defer优化白屏时间
让组件在不同的渲染时机进行渲染
js
// v-if="defer(0)"
function useDefer(frameIndex) {
const frameCount = ref(0); // 响应式数据,这样可以触发页面渲染
function update() {
requestAnimationFrame(() => {
frameCount.value++;
update();
})
}
update();
return function () {
if (frameIndex < frameCount) {
return false
}
return true
}
}