vue+vite 减缓首屏加载压力和性能优化

vue+vite 减缓首屏加载压力和性能优化

在vue+vite构建的工程里面,性能优化分为开发环境和打包后的生产环境,作为开发首先需要把找个了解清楚,接下来分别解析在开发和生产处理的方案,不多说,直接上代码。

1、预加载项目必需的组件

c 复制代码
 // 预加载项目必需的组件
    optimizeDeps: {
      include: [
        "vue",
        "vue-router",
        "pinia",
        "axios",
        "@vueuse/core",
        "sortablejs",
        "exceljs",
        "path-to-regexp",
        "echarts",
        "@wangeditor/editor",
        "@wangeditor/editor-for-vue",
        "vue-i18n",
        "vue-echarts",
        "echarts-liquidfill",
        "path-browserify",
        "lodash",
        "moment",
      ],
    },

这个配置是写入vite.config.ts 配置文件里面,optimizeDeps和plugins 同级别

2、使用 vite-plugin-optimize-persist 自动生成最优预构建配置

c 复制代码
npm install vite-plugin-optimize-persist -D
c 复制代码
import OptimizationPersist from 'vite-plugin-optimize-persist'

export default {
  plugins: [
    OptimizationPersist()
  ]
}

2、模块加载优化

按需加载架构

c 复制代码
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

export default {
  plugins: [
    Components({
      resolvers: [ElementPlusResolver()]
    })
  ]
}

动态导入辅助

c 复制代码
<script setup>
import { defineAsyncComponent } from 'vue'
const HeavyComponent = defineAsyncComponent(() => 
  import('./components/HeavyComponent.vue')
)
</script>

3、HMR 热更新优化

文件监听策略

c 复制代码
export default {
  server: {
    watch: {
      usePolling: true,
      interval: 1000,
      ignored: [
        '**/node_modules/**',
        '**/.git/**',
        '**/dist/**'
      ]
    }
  }
}

智能缓存策略

c 复制代码
export default {
  cacheDir: './.custom_vite_cache',
  build: {
    rollupOptions: {
      cache: false // 开发环境保持启用
    }
  }
}

4 、环境配置优化

c 复制代码
NODE_OPTIONS="--max-old-space-size=4096" vite

5、代码模式优化

Tree-shaking 增强

c 复制代码
export default {
  build: {
    rollupOptions: {
      treeshake: {
        preset: 'recommended',
        moduleSideEffects: (id) => !/\.css$/.test(id)
      }
    }
  }
}

Dead Code 检测

c 复制代码
import { defineConfig } from 'vite'
import deadcode from 'vite-plugin-deadcode'

export default defineConfig({
  plugins: [
    deadcode({
      patterns: ['src/**/*.(js|vue)']
    })
  ]
})

6、高级优化技巧

GPU 加速渲染

c 复制代码
.gpu-accelerate {
  transform: translateZ(0);
  backface-visibility: hidden;
  perspective: 1000px;
}

内存优化策略

c 复制代码
// 使用 WeakMap 存储大型临时数据
const cache = new WeakMap()

export function useHeavyCalculation() {
  // 内存敏感操作
}

7、架构级优化

微前端优化

c 复制代码
// 子应用配置
export default {
  build: {
    lib: {
      entry: './src/main.js',
      name: 'vue3Module',
      formats: ['es']
    }
  }
}

Web Workers 优化

c 复制代码
// worker-loader.js
export default function (config) {
  return {
    name: 'worker-loader',
    transform(code, id) {
      if (id.includes('?worker')) {
        return `
          export default function WorkerWrapper() {
            return new Worker(
              URL.createObjectURL(
                new Blob([${JSON.stringify(code)}], 
                { type: 'application/javascript' }
              )
            )
          }
        `
      }
    }
  }
}

打包压缩配置

c 复制代码
 plugins: [
    viteCompression({
      // gzip静态资源压缩配置
      verbose: true, // 是否在控制台输出压缩结果
      disable: false, // 是否禁用压缩
      threshold: 10240, // 启用压缩的文件大小限制
      algorithm: 'gzip', // 采用的压缩算法
      ext: '.gz' // 生成的压缩包后缀
    })
  ],
相关推荐
cll_8692418916 分钟前
一个好看的Wordpress博客文字css样式
前端·css·ui
糖果店的幽灵10 分钟前
langgraph分支之 - 动态分支(Dynamic Branch)
java·前端·javascript·人工智能·langgraph
meilindehuzi_a20 分钟前
Workflow 与 Agent 有什么区别:从 LangChain 流水线到智能体决策
前端·人工智能
Bad_Shepherd26 分钟前
vue-element-plus-admin添加自定义svg图标,并且图标选择组件可选自定义图标
vue.js·elementui·前端框架
吃糖的小孩2 小时前
从只读页面到可控真实探针:我如何给 Owner Console 加手动诊断
前端
谷无姜2 小时前
为什么你的性能优化无效?可能是"木桶效应"在作祟
前端·性能优化
雾非雾2 小时前
《基于具身交互智能数字人技术:如何打造AI数字人宣讲平台"红厅智播”》
前端
Revolution612 小时前
一段 JavaScript 代码执行时,到底发生了什么
前端·javascript
智能起源2 小时前
关于元素层级过多,导致压祯的问题(使用winform或者WPF应用的webview组件嵌套网页时,动效卡顿问题)
前端