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' // 生成的压缩包后缀
    })
  ],
相关推荐
风骏时光牛马17 分钟前
智能赋能型AI办公一体化系统架构
前端
满栀58536 分钟前
vue动态路由效果
前端·javascript·vue.js·前端框架·vue
土豆~1 小时前
文件名没后缀就打不开:前端文件预览的内容嗅探改造
前端·状态模式
Euato_Key1 小时前
全栈视野学习Cookie——理解 Cookie 的本质
前端
前端开发呀1 小时前
我的 AI 终端配置清单
前端
心运软件2 小时前
SpringBoot+ Vue校园社团管理平台的完整架构设计
vue.js·后端
敲代码的玉米C2 小时前
测试一直在写你的真实数据根
前端·人工智能·架构
jjw_zyfx2 小时前
css vue vite实现闪烁的呼吸效果
javascript·css·vue.js
执子念的飞鱼2 小时前
File Viewer 进入 2K 节点后,我更在意这 3 条回归
前端·typescript