关于Vite后台项目的打包优化(首屏加载)

前言

主要应该是后台使用 后台功能多了体积会越来越大

代码层面的优化

  • 合理使用treeShaking
js 复制代码
// 这样可以利用treeshaking
import { someField } from 'xxx.json';

// 这样是不会有treeShaking
import allData from 'xxx.json';
allData.someField;
  • 动态import(懒加载)
scss 复制代码
() => import('/xxxxx.vue')
defineAsyncComponment(xxxx)

//react
React.lazy(() => import('xxxx.tsx'))

不多赘述 这样会单独打包出来一个文件

build配置

这里使用真实项目来配置 gitee.com/dapppp/ruoy...

首先是gzip 这个肯定要加

js 复制代码
// 支持gzip压缩
import viteCompression from 'vite-plugin-compression';

viteCompression({
  verbose: true,
  disable: false,
  threshold: 10240,
  algorithm: 'gzip',
  ext: '.gz',
}),

压缩完体积还是挺可观的

然后是rollupOptions配置了

js 复制代码
output: {
  assetFileNames: '[ext]/[name]-[hash].[ext]',
  chunkFileNames: 'js/[name]-[hash].js',
  entryFileNames: 'jse/index-[name]-[hash].js',
},

这里其实对体积没有影响 只是会打包到固定的目录

使用 停用缓存+4G 来模拟线上第一次打开

请求48 首屏2.6M资源 4.4S

还有优化空间吗 通过对网络请求的分析 发现有很多碎片文件

浏览器不可能一次获取 而且模块之间也有依赖关系 这些碎片文件占用了连接数 怎么优化呢

js 复制代码
output: {
  assetFileNames: '[ext]/[name]-[hash].[ext]',
  chunkFileNames: 'js/[name]-[hash].js',
  entryFileNames: 'jse/index-[name]-[hash].js',
  experimentalMinChunkSize: 20 * 1024,
},

使用这个配置experimentalMinChunkSize 尽可能将碎片文件打包在一起 rollup - experimentalMinChunkSize

为什么说是尽可能呢 因为文档指出 包含副作用模块是不会打包在一起的 像上面的动态import文件尽管文件很少 也不会被打包

再次打包看看

请求数 48 - 30

资源 2.6 - 2.8 (因为一些额外的也打包进来了)

加载时间 4.4S - 2.5S 起飞!

可以看到虽然体积增加了 加载速度还更快了

相关推荐
问道飞鱼6 分钟前
【前端知识】React生态你了解多少?
前端·react.js·前端框架·生态
Pu_Nine_97 分钟前
前端SSE(Server-Sent Events)实现详解:从原理到前端AI对话应用
前端·langchain·sse·ai对话
optimistic_chen17 分钟前
【Vue3入门】Pinia 状态管理 和 ElementPlus组件库
前端·javascript·vue.js·elementui·pinia·组件
酉鬼女又兒20 分钟前
零基础入门前端JavaScript 核心语法:var/let/const、箭头函数与 setTimeout 循环陷阱全解析(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·蓝桥杯
Bling_Bling_123 分钟前
【无标题】
前端·网络协议
We་ct24 分钟前
React Diff & Key 核心解析
开发语言·前端·javascript·react.js·前端框架·reactjs·diff
哥本哈士奇25 分钟前
Vue 3 快速入门:从零搭建前后端 CRUD 应用
前端·javascript·vue.js
biubiubiu070626 分钟前
Agent 是如何拥有“手脚”的(ReAct 运行流程)
开发语言·前端·javascript
摸鱼的春哥30 分钟前
Agent教程21:知识图谱🕸,让AI🤖学会联想
前端·javascript·后端
SuperEugene30 分钟前
Vue3 组件拆分实战规范:页面 / 业务 / 基础组件边界清晰化,高内聚低耦合落地指南|Vue 组件与模板规范篇
前端·javascript·vue.js·前端框架