🔍性能诊断用数据说话
-
Lighthouse精准定位瓶颈
1bash 2npm run build && npx serve -s dist 3npx lighthouse http:
-
核心指标:FCP(首次内容渲染)<1.5s、LCP(最大内容渲染)<2.5s
-
实战技巧:通过性能面板揪出长任务(Long Tasks)
-
-
Webpack Bundle分析
安装webpack-bundle-analyzer
插件,可视化查看各模块体积占比
🚀 核心优化5大杀器
🔥 技巧1:路由级懒加载(体积削减40%)
1javascript
2
3const routes = [{
4 path: '/dashboard',
5 component: () => import( '@/views/Dashboard.vue')
6}];
- 效果:首屏仅加载必要组件,非核心路由延迟加载
🔥 技巧2:组件级动态导入
1vue
2<script setup>
3const HeavyChart = defineAsyncComponent(() =>
4 import('@/components/HeavyChart.vue')
5);
6</script>
🔥 技巧3:CDN加速静态资源
1javascript
2// vite.config.js
3export default {
4 build: {
5 rollupOptions: {
6 output: {
7 assetFileNames: 'cdn/[hash][extname]'
8 }
9 }
10 }
11}
- 推荐:将
vue
、element-plus
等库托管至阿里云CDN
🔥 技巧4:极致压缩方案
-
Webpack配置Gzip+Brotli双压缩(体积减少70%)
-
图片转WebP格式:
vite-imagetools
自动转换
🔥 技巧5:骨架屏黑科技
1vue
2<template>
3 <Skeleton v-if="loading" />
4 <MainContent v-else />
5</template>
- 推荐使用
vue-skeleton-webpack-plugin
自动生成
💎进阶优化方案
🎯 方案1:SSR服务端渲染(首屏提速300%)
1javascript
2
3export default {
4 target: 'server',
5 render: {
6 compressor: { threshold: 0 }
7 }
8}
- 配合Redis缓存接口数据,QPS提升10倍
🎯 方案2:预渲染SEO优化
1bash
2npm install prerender-spa-plugin
- 生成静态HTML解决SEO难题
🎯 方案3:Tree Shaking精准瘦身
1javascript
2
3import { ElButton } from 'element-plus';
- 配合
babel-plugin-component
实现零冗余
📊 优化效果对比
优化项 | 优化前 | 优化后 | 提升幅度 |
---|---|---|---|
JS总体积 | 3.2MB | 680KB | ↓78% |
FCP时间 | 4.5s | 0.8s | ↑462% |
Lighthouse评分 | 58分 | 92分 | ↑58% |
个人笔记记录 2021 ~ 2025