vite打包优化

news/2024/11/24 9:42:55/

说到前端性能优化🚀,通过我个人的感觉总体的来说优化的本质就是优化文件的体积,体积小了加载就快了,当然前端性能不光是在体积方面,在代码层面需要去优化,本篇文章主要讲述的是Vite打包优化。

分包策略

因为浏览器的缓存策略,当请求的文件名不变时,会直接从缓存中获取文件,所以只要每次 main.js 中内容发生了变化,打包后的文件名中的 hash 值都会不一样。也就是说,当项目业务代码发生变化,例如 main.ts 中循环体内的内容发生了变化时,打包后的文件名就发生了变化,浏览器就会重新请求文件。但是这里的问题是,每次打包后的内容大部分都是 lodash 库的内容,它的内容是不会变化的(node_modules 中的代码都是不会变化的),我们只是更改了业务代码而已,会导致每次浏览器请求的文件都很大,很大的网络传输损耗。

分包策略就是为了解决这个问题,它会将一些不常规更新变化的文件进行单独打包处理。

在vite.config.js中配置

import {defineConfig} from 'vite'
module.exports= defineConfig({build: {sourcemap: false,minify: 'terser',chunkSizeWarningLimit: 1500,terserOptions: {// 去掉console和debuggercompress: {drop_console: true,drop_debugger: true}},rollupOptions: { // vite打包是通过rollup来打包的output: {manualChunks: (id) => {// 可以在这里打印看一下id的值,这里做个简单处理将node_modules中的包打包为vendor文件if(id.indexOf('node_modules') > -1) {return 'vendor'}}// 用于从入口点创建的块的打包输出格式[name]表示文件名,[hash]表示该文件内容hash值entryFileNames: 'js/[name].[hash].js',// 用于命名代码拆分时创建的共享块的输出命名chunkFileNames: 'js/[name].[hash].js',// 用于输出静态资源的命名,[ext]表示文件扩展名assetFileNames: '[ext]/[name].[hash].[ext]',}}},
});

2. gzip压缩

安装 vite-plugin-compression

npm i vite-plugin-compression -D

在vite.config.js中配置

import { defineConfig } from 'vite'
import VitePluginCompression from 'vite-plugin-compression'export default defineConfig({build: {...},plugins: [...VitePluginCompression()]
})

3. CDN加速

分发策略里我们将依赖单独打成一个稳定的包。现在是另外一个场景:比如国内访问一些未被封的国外网站(例如 github、newsela 等)网站时,因为服务器在国外,所以浏览器打开这些网站时请求时间一般都会比较久。即使你分包了,但是如果这个包体积很大,访问时间还是会很长,因为是从国内访问国外了。

如果我们将其中一些依赖包经过 cdn 的方式访问,例如 Vue vue-router 这些包通过 cnd 的方式访问,那么这些包就会直接通过 cdn 地址的方式加载,而不是在我们的服务器上去请求,这样我们的项目包就会更小,页面响应就会更快。

安装 vite-plugin-cdn-import

npm install vite-plugin-cdn-import -D

在vite.config.js中配置

import { defineConfig } from 'vite'
import ViteCDNPlugin from 'vite-plugin-cdn-import'export default defineConfig({plugins: [ViteCDNPlugin({modules: [{name: 'lodash', // 包名var: '_', // 对应cdn包导出的变量,如jQuery导出的是$path: 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js'}]})]
})

4. 图片压缩

安装vite-plugin-imagemin

npm install vite-plugin-imagemin -D

在vite.config.js中配置

import viteImagemin from "vite-plugin-imagemin"
import {defineConfig}from 'vite'
module.exports = defineConfig{plugins:[viteImagemin()]
})

http://www.ppmy.cn/news/283605.html

相关文章

Kubernetes DashBoard

Kubernetes DashBoard 为了便于用户操作,k8s开发了基于Web的用户界面。方便用户容器化应用,还可以监控应用状态,执行故障排除和管理资源。 📊部署DashBoard 下载yaml,运行DashBoard #下载yaml [rootmaster ~]# wget …

网工内推 | 网安专场,CISP认证优先,带薪年假,六险一金

01 MATRIX TECH 🔷招聘岗位:安全工程师 🔷职责描述: 1、负责信息安全防护系统的日常管理 、监测和优化提升等安全运营工作,包括终端安全、防护、漏洞检测、补丁、入侵检测、拒绝服务攻击防护、源代码安全检查等&#…

Java设计模式(五)

系列文章目录 设计模式概述和分类 文章目录 系列文章目录前言一、掌握设计模式的层次二、设计模式介绍三、设计模式类型1.设计模式的三种类型2.设计模式概述 总结 前言 大家好呀,欢迎来到柚子的博客~让我们一起成长吧o( ̄▽ ̄)ブ 提示&#x…

HDU 6230

题意:字符串S【1,3n-2】 中以 位置n(C1)和2n-1(C2)为回文串中心,长度都为n,找出给出的主串中有多少这样的子串 分析:首先用manacher求出以每个点为中心的回文串半径,考虑…

ESXi服务器CPU睿频检测

ESXi的VM中显示主机频率是恒定的,因此无法知道实际CPU是否睿频。通过查阅相关资料得出可以使用esxtop命令查看CPU实际频率。 以下是操作步骤 1.启动ESXi ssh服务。 2.使用ssh工具连接主机 3.执行esxtop 4.依次按p,f,f,回车 5.使用A/MPERF列数据*cpu基础频率得到的就…

HDU 6230 (ManacherBIT)

HDU 6230 (Manacher&BIT) 依据题意可知,我们需要找到满足两个相交的回文串。 分为几个步骤: 1.求出每个位置的最大回文半径。 2.判断每个位置的贡献。 3.求和. 我们从小到大枚举位置 i i i: 对于 i i i需要满足的 j j j的条件有&a…

A30、V100性能测试对比报告

一,基础配置对比 卡型架构卡数显存CUDAGPU Driver(TDP)能源消耗CPU核数(超线程)内存大小CPU型号发布日期备注A30Ampere824G11.0450.51.06165 Watt48252AMD EPYC 7402 24-Core Processor2021PCIeV100Volta832G11.4470.57.02250 Watt80503Intel Xeon Gold 6230 CPU …

MT7621_基础篇(1) 芯片资料了解 一

项目开发需要使用MT7621,负责驱动移植,适配公司板卡。网上相关资料多为涉及openwrt的,不太符合我们裁剪要求,故记录此流程,进行深入学习研究。首先先对芯片资源做一个了解。后续计划包括uboot移植分析,kern…