当前位置:首页 > 技术分析 > 正文内容

记一次Vite打包优化(vite 打包报错)

ruisui883个月前 (02-03)技术分析12

前言

近期为了上线 Module Federation ,发现项目 Vue-cli 版本太低用不了,就顺便把应用用 Vite 重新配置了下,发现打包后页面加载速度不理想,故开启一段优化之旅

目标和指标

既然要优化,那就必须有目标,能量化

目标

本次优化目标

  • 正常网速下,2s内加载完成

指标

关于指标,这里简单介绍下常见的优化指标

  • FCP(First Contentful Paint):白屏时间(第一个文本绘制时间)
  • Speed Index:首屏时间
  • TTI(Time To Interactive): 第一次可交互的时
  • lighthouse score:Chrome浏览器审查工具性能评分

开始性能分析

我们大部分的性能分析都可以借助 Chrome 完成,大致可以分为

Network 分析

Lighthouse 分析

Bundle 分析

Network 分析

从网络加载状态看可以发祥有一个 1.9MB 的 index.js 文件占用了比较大的加载时间,阻塞了其它资源的加载,是一个优化点

Lighthouse 分析

使用

结果

前面我们罗列的一些指标都可以在这里直观的看到数值,记录下来为我们调优后进行参考指标对比

Bundle 分析

因为使用的是 vite,借助插件 rollup-plugin-visualizer,来进行 bundle 分析

安装

pnpm i rollup-plugin-visualizer -D

引入

import { visualizer } from 'rollup-plugin-visualizer'

const plugins = [vue(), visualizer()]

打包之后会在项目根目录生成 stats.html 文件,打开

分析可以看出之前 index.js 加载慢很大一部分原因是因为加载了 echarts 包,这就给我门优化提供了方向

开始优化

通过之前的分析,主要的加载优化方向还是大体积文件瘦身(之前已经做过 gzip 的优化,如果没做过的同学强烈推荐,可以极大提升加载速度)

GZIP 配置

这里顺便介绍下 vite 的 GZIP 配置

安装 vite-plugin-compression

npm i vite-plugin-compression -D

修改 vite.config.js 配置

 import viteCompression from 'vite-plugin-compression'
 
 plugins: [vue(), viteCompression()]

打包后就会生成 gzip 文件了,但是服务端 nginx 还需要配置一下才能生效

http {
    gzip_static on;
    gzip_proxied any;
}

具体也可以看看我的这篇文章,有详细介绍

系统介绍浏览器缓存机制及前端优化方案

echarts 单独拆分

修改 vite.config.js 配置

build: {
    rollupOptions: {
        output: {
            manualChunks: {
                echarts: ['echarts']
            }
        }
    }
}

打包后 Index.js 体积变化(未压缩前)

Before: 4.49MB

After: 1.34MB

图片压缩

安装 vite-plugin-imagemin

npm i vite-plugin-imagemin -D

修改 vite.config.js 配置

import viteImagemin from "vite-plugin-imagemin"

plugins: [vue(), viteImagemin()]

打包后会生成压缩的图片,但是每次打包都会重新压缩一遍,比较浪费时间,如果不介意的话采用此方案也很简单,网上查了一下有使用本地压缩的方案,不过配置比较繁琐,就自己写了个插件,后续会有文章单独介绍,敬请关注

结果分析

Network 分析

加载时间 平均节省 1

Lighthouse 分析

分数由 46 提升到 52

Bundle 分析

主包体积缩小 1 M 左右

总结

到此本次优化告一段路,基本达到预期效果,不过遗留了一些问题,像引用 video 插件相关的一些页面想用开头提到的组件联邦 Module Federation来做,但是加载时部分手机浏览器出现兼容问题未能完成,后续等解决了兼容问题在单独写一篇总结 ^-^

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/854.html

标签: vite.js
分享给朋友:

“记一次Vite打包优化(vite 打包报错)” 的相关文章

前后端分离自动化运维平台开发

运维平台采用前后端分离:前端vue,框架vue-element-admin;后端python,框架django-rest-framework.目前运维平台模块如下:1、 CMDB管理应用管理、环境管理、开发语言管理、产品项目管理、资产管理2、 构建发布持续构建、持续部署、Jar工程依赖构建3、 容器...

代码分支规范

一.gitflow工作流说明:主分支:master,稳定版本代码分支,对外可以随时编译发布的分支,不允许直接Push代码,只能请求合并(pull request),且只接受hotfix、release分支的代码合并。gitlab上做限制。热修复分支:hotfix,针对现场紧急问题、bug修复的代码分...

再来一波黑科技工具,低调使用

静读天下静读天下是一个特别优秀的电子书阅读器。它上面有多个在线书库,像古登堡计划,很多种优秀的书杂志,都可以下载来阅读。它还能智能识别章节功能,还支持外置的语音阅读功能。它支持多种文本格式,比如说txt,pdf,epub,mobi等等。为了便于阅读它还有10 种配色方式,还有夜间模式。不过免费版有广...

多项修正 尼康D4s发布最新1.10版固件

尼康公司与2014年8月27日发布了D4s的最新固件,固件版本号为C:1.10。这次固件升级,主要解决了一些BUG,并且对拍摄菜单与相机操作做了一定调整。下面是本次新固件的具体信息:尼康发布D4s最新C固件 1.10版对C固件升级到1.10版所作的修改:当选定运动VR模式并换上 AF-S 尼克尔 4...

VUE 技术栈

官网链接:https://cn.vuejs.org/什么是vue:渐进式JavaScript 框架vue-cli链接:https://cli.vuejs.org/vue-cli安装:npm install -g @vue/clivue -V创建一个项目:vue create xxxxxx模版语法:文...

SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

//xia仔のke:chaoxingit.com/208/全栈开发医疗小程序:利用Spring Boot 2.X、Vue和UniApp在当今数字化时代,医疗行业也在不断地迈向信息化和智能化的方向。开发一款医疗小程序,能够为用户提供便捷的医疗服务和信息查询,为医疗机构提供高效的管理和服务渠道。本文将介...