🔍性能诊断用数据说话

  1. Lighthouse精准定位瓶颈

     1bash
     2npm run build && npx serve -s dist
     3npx lighthouse http:
    
    • 核心指标:FCP(首次内容渲染)<1.5s、LCP(最大内容渲染)<2.5s

    • 实战技巧:通过性能面板揪出长任务(Long Tasks)

  2. 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}
  • 推荐:将vueelement-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.2MB680KB↓78%
FCP时间4.5s0.8s↑462%
Lighthouse评分58分92分↑58%

 

个人笔记记录 2021 ~ 2025