当前位置: 首页 > news >正文

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

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

    • 1、预加载项目必需的组件
    • 2、模块加载优化
    • 3、HMR 热更新优化
    • 4 、环境配置优化
    • 5、代码模式优化
    • 6、高级优化技巧
    • 7、架构级优化
    • 打包压缩配置

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

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

 // 预加载项目必需的组件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 自动生成最优预构建配置

npm install vite-plugin-optimize-persist -D
import OptimizationPersist from 'vite-plugin-optimize-persist'export default {plugins: [OptimizationPersist()]
}

2、模块加载优化

按需加载架构

import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'export default {plugins: [Components({resolvers: [ElementPlusResolver()]})]
}

动态导入辅助

<script setup>
import { defineAsyncComponent } from 'vue'
const HeavyComponent = defineAsyncComponent(() => import('./components/HeavyComponent.vue')
)
</script>

3、HMR 热更新优化

文件监听策略

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

智能缓存策略

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

4 、环境配置优化

NODE_OPTIONS="--max-old-space-size=4096" vite

5、代码模式优化

Tree-shaking 增强

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

Dead Code 检测

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

6、高级优化技巧

GPU 加速渲染

.gpu-accelerate {transform: translateZ(0);backface-visibility: hidden;perspective: 1000px;
}

内存优化策略

// 使用 WeakMap 存储大型临时数据
const cache = new WeakMap()export function useHeavyCalculation() {// 内存敏感操作
}

7、架构级优化

微前端优化

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

Web Workers 优化

// 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' }))}`}}}
}

打包压缩配置

 plugins: [viteCompression({// gzip静态资源压缩配置verbose: true, // 是否在控制台输出压缩结果disable: false, // 是否禁用压缩threshold: 10240, // 启用压缩的文件大小限制algorithm: 'gzip', // 采用的压缩算法ext: '.gz' // 生成的压缩包后缀})],

相关文章:

  • dea如何使用git
  • python程序打包——nuitka使用
  • 「数据可视化 D3系列」入门第三章:深入理解 Update-Enter-Exit 模式
  • Redis - 讲清楚集群模式(Redis Cluster)(上)
  • C++ 创龙UDP通讯demo
  • 如何在vue3项目中使用 AbortController取消axios请求
  • UWB技术与5G、物联网结合的应用前景
  • c# 根据圆面积计算最大芯片数量
  • Java虚拟机面试题:类加载机制
  • 【grafana原生告警中心配置飞书机器人告警】
  • 微信小程序-自定义toast
  • 最近准备写个Playbook,详细点的指导手册,作为后续的销售培训文件,也趁着这个机会整理下产品思路,尤其是对于UALink,UEC新的联盟规范的测试用例
  • 深入剖析 FastAdmin 权限验证体系:与 UserRule 表的紧密关联及最佳实践
  • 智能合约安全审计平台——可视化智能合约漏洞扫描
  • *差分自回归移动平均模型(ARIMA)
  • # 从零开发小红书风格Flutter应用:图片上传功能实现踩坑记录
  • Spark-SQL2
  • OpenCV中的轮廓近似方法详解
  • MCP Server 开发实战 | 大模型无缝对接 Grafana
  • 49、发起流式请求获取回答
  • MiniMax发布新一代语音大模型
  • 罗马教皇利奥十四世正式任职
  • 博物馆书单|走进博物馆,去体验一场与文明的对话
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案
  • 南宁一学校发生伤害案件,警方通报:嫌疑人死亡,2人受伤
  • 又一例!易方达基金张坤卸任副总职务,将专注于投资管理工作