性能优化
代码优化手段
- 请求缓存
- 取消请求
- 请求重试
- 避免重排重绘
- 节流:窗口调整、页面滚动、拖拽(定时请求)
- 防抖:搜索框(请求一次)
- IntersectionObserver
- requestAnimationFrame
- webworker
首屏优化

- cdn
- gzip(前端配置的话就是静态压缩会生成.gzip 文件,否则就是服务端压缩)
- ssr
- loading/骨架屏(减少用户焦虑)
- 按需加载(支持 tress-shaking)
- 替换一些库,换成更小的库,升级老版本库,尽量不使用第三方库
- 图片懒加载
- 路由懒加载
- 减少 dom 数量 和层级
- 异步加载(体积大,但又不是马上需要的功能)
- 利用浏览器缓存
- 精灵图
- 代码尽量精简
- 去除大的 base64
- 首屏数据尽量并行(不要一直 then),如果可行让小数据合并到其他接口
- 使用虚拟滚动分批渲染
- 使用 GPU 加速
- 将第三方包进行代码分割,减小 js 体积
如果需要使用 v-for 给每项元素绑定事件时使用事件代理
vue
<template>
<ul @click="handleClick">
<li v-for="item in list" :key="item.id">{{ item.name }}</li>
</ul>
</template>
<script setup>
handleClick(e) {
if (e.target.tagName.toLowerCase() === 'li') {
console.log(e.target.innerText)
}
}
</script>