Vue 项目文件大小优化

优化逻辑

任何优化需求,都有一个前提,即可衡量。

那 Vue 加载速度的优化需求,本质上是要降低加载静态资源的大小。

所以,优化前,需要有一个了解项目现状的资源加载大小情况。

主要分 3 步走:

  • 找到方法测量打包文件大小的方式。

  • 完成打包文件大小的测量。

  • 根据测量结果,对大文件进行针对性地优化处理。

思路捋顺后,核心就是要找到一个可测量的工具

而要测量项目运行包的各个文件大小,关键在于要测量项目打包构建后的各个文件大小。

所以测量工具插件,和打包环境密切相关。

不同的环境下,有不同的测量工具。

以下罗列了当前 Vue3 项目下常用的打包环境及包大小测量和分析插件。

Vue3 + Vite 环境

安装插件

npm install vite-plugin-compression --save-dev

配置插件

vite.config.js 文件中添加 rollup-plugin-visualizer 插件的配置,如下:

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { visualizer } from 'rollup-plugin-visualizer'  // 引入 visualizer 插件export default defineConfig({plugins: [vue(),visualizer({open: true,  // 构建完成后会自动打开浏览器,显示可视化报告。如果您不想自动打开,可以设置为 false。filename: 'stats.html',  // 生成的报告文件名称,默认保存为项目根目录下的 stats.html 文件,您可以修改路径和文件名。gzipSize: true,  // 显示各文件在经过 gzip 压缩后的大小brotliSize: true  // 显示各文件在经过 brotli 压缩后的大小})],build: {rollupOptions: {output: {manualChunks(id) {if (id.includes('node_modules')) {return id.toString().split('node_modules/')[1].split('/')[0].toString();}}}}}
});

构建项目生成报告

npm run build

构建完成后,按照配置会自动生成报告 stats.html 文件。

如果配置为 open:true,则会在构建完成后自动打开报告页面。

报告示例

如上图,打包文件占比较大的主要是以下 3 个包/文件:

  • element-plus:

  • lodash.js

  • ort.min.js

所以,根据占比较大的文件去做针对性的优化即可。

Vue3 + Vue Cli 环境(Webpack打包)

安装插件

npm install --save-dev webpack-bundle-analyzer

配置插件

vue.config.js 中引入并配置 webpack-bundle-analyzer 插件。

const { defineConfig } = require('@vue/cli-service')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;module.exports = defineConfig({transpileDependencies: true,configureWebpack: {plugins: [new BundleAnalyzerPlugin({analyzerMode: 'static', // 生成静态 HTML 文件openAnalyzer: true, // 构建完成后自动打开浏览器展示报告reportFilename: 'bundle-report.html', // 报告文件名,可以自定义路径和名称}),],},
});

构建项目生成报告

在配置完成后,您可以运行以下命令构建项目,并生成报告:

npm run build

构建完成后,webpack-bundle-analyzer 会生成一个静态的 HTML 文件(默认在 dist/ 目录下,或根据 reportFilename 的配置),并自动在浏览器中打开。可以在报告中查看每个模块的体积以及其依赖关系。

报告示例

Vue3 + Rollup 环境

安装插件

npm install --save-dev rollup-plugin-visualizer

配置插件

rollup.config.js 文件中添加该插件:

import { visualizer } from 'rollup-plugin-visualizer';export default {input: 'src/main.js', // 项目的入口文件output: {file: 'dist/bundle.js', // 输出文件format: 'es',},plugins: [// 其他插件visualizer({open: true, // 构建完成后自动打开浏览器展示报告filename: 'stats.html', // 生成的报告文件名gzipSize: true, // 显示 gzip 压缩后的大小brotliSize: true // 显示 brotli 压缩后的大小})],
};

构建项目生成报告

npx rollup -c

构建完成后,按照配置会自动生成报告 stats.html 文件。

如果配置为 open:true,则会在构建完成后自动打开报告页面。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/442359.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu24.04远程开机

近来在几台机器上鼓捣linux桌面,顺便研究一下远程唤醒主机。 本篇介绍Ubuntu系统的远程唤醒,Windows系统的唤醒可搜索相关资料。 依赖 有远程唤醒功能的路由器(当前一般都带这个功能)有线连接主机(无线连接有兴趣朋友…

jmeter学习(4)提取器

同线程组https://blog.csdn.net/vikeyyyy/article/details/80437530 不同线程组 在JMeter中,正则表达式提取的参数可以跨线程组使用。 通过使用Beanshell后置处理器和属性设置函数,可以将提取的参数设置为全局变量,从而在多个线程组之间共享…

电子摄像头分割系统源码&数据集分享

电子摄像头分割系统源码&数据集分享 [yolov8-seg-C2f-DWR&yolov8-seg-C2f-ContextGuided等50全套改进创新点发刊_一键训练教程_Web前端展示] 1.研究背景与意义 项目参考ILSVRC ImageNet Large Scale Visual Recognition Challenge 项目来源AAAI Glob…

大多数人不知道的:线程池CallerRunsPolicy()拒绝策略

总所周知,java里面线程池的四个拒绝策略 AbortPolicy 丢弃并抛出RejectedExecutionException异常 DiscardPolicy 直接丢弃 DiscardOldestPolicy 直接丢弃最前面的任务,尝试执行新任务 CallerRunsPolicy 由调用线程池的线程处理任务&a…

Ascend C 自定义算子开发:高效的算子实现

Ascend C 自定义算子开发:高效的算子实现 在 Ascend C 平台上,开发自定义算子能够充分发挥硬件的性能优势,帮助开发者针对不同的应用场景进行优化。本文将以 AddCustom 算子为例,介绍 Ascend C 中自定义算子的开发流程及关键技术…

乌班图基础设施安装之Mysql8.0+Redis6.X安装

简介:云服务器基础设施安装之 Mysql8.0Redis6.X 安装 Docker安装 # 按照依赖 yum install -y yum-utils device-mapper-persistent data lvm2 Docker Mirror 从去年开始. hub.docker.com[1] 在国内的访问速度极慢. 当时大家主要还是依赖国内的一些镜像源: 如中科…

CSS圆角

在制作网页的过程中,有时我们可能需要实现圆角的效果,以前的做法是通过切图(将设计稿切成便于制作成页面的图片),使用多个背景图像来实现圆角。在 CSS3 出现之后就不需要这么麻烦了,CSS3 中提供了一系列属性…

Python 卸载所有的包

Python 卸载所有的包 引言正文 引言 可能很少有小伙伴会遇到这个问题,当我们错误安装了一些包后,由于包之间有相互关联,导致一些已经安装的包无法使用,而由于我们已经安装了很多包,它们的名字我们并不完全知道&#x…

婚宴桌号查询指南

婚宴时如何查询桌号? 在婚宴这样的大型活动中,确保每位宾客都能迅速找到自己的座位是一项重要的任务。为了让宾客们能够轻松地找到自己的桌号,享受宴会的每一刻,我们特别准备了一份详细的婚宴桌号查询教程。本教程将指导您如何通过…

SQl注入文件上传及sqli-labs第七关less-7

Sql注入文件上传 1、sql知识基础 secure_file_priv 参数 secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。 secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能导出导入。 secure_fil…

深度学习:CycleGAN图像风格迁移转换

目录 基础概念 模型工作流程 循环一致性 几个基本概念 假图像(Fake Image) 重建图像(Reconstructed Image) 身份映射图像(Identity Mapping Image) CyclyGAN损失函数 对抗损失 身份鉴别损失 Cyc…

《Python 安装指南:开启编程之旅》

《Python 安装指南:开启编程之旅》 在当今数字化的时代,编程已经成为一项越来越重要的技能。而 Python 作为一种简洁、高效且功能强大的编程语言,受到了众多开发者的青睐。无论是数据科学、人工智能、Web 开发还是自动化脚本编写&#xff0c…

绕过中间商,不用 input 标签也能搞定文件选择

💰 点进来就是赚到知识点!本文带你用 JS 实现文件选择功能,点赞、收藏、评论更能促进消化吸收! 🚀 想解锁更多 Web 文件系统技能吗?快来订阅专栏「Web 玩转文件操作」! 📣 我是 Jax,…

Axure中文版:原型设计新手必备工具,轻松上手!

原型设计是每位产品经理必备的核心技能。通过原型设计,可以提前测试产品与用户之间的交互,发现潜在问题,提升设计效率,节省开发成本。对于移动应用来说,原型相当于产品的说明书,有助于设计师和工程师之间进…

广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞

漏洞描述 广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑,提供一百余款基于“端云大数据”产品/服务,提供产业大数据、产业新金融等增值服务的数字建筑平台服务商。广联达OA存在信息泄露漏洞,由于某些接口没有鉴权&#xff0c…

计算机网络:物理层 —— 信道复用技术

文章目录 信道信道复用技术信道复用技术的作用基本原理常用的信道复用技术频分复用 FDM时分复用 TDM波分复用 WDM码分复用 CDM码片向量基本原理 信道 信道是指信息传输的通道或介质。在通信中,信道扮演着传输信息的媒介的角色,将发送方发送的信号传递给…

LSTM变种模型

一、GRU 1.概念 GRU(门控循环单元,Gated Recurrent Unit)是一种循环神经网络(RNN)的变体,旨在解决标准 RNN 在处理长期依赖关系时遇到的梯度消失问题。GRU 通过引入门控机制简化了 LSTM(长短期…

APP测试中ios和androis的区别,有哪些注意点

一、运行机制不同 IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制。 1、沙盒机制: 概念:沙盒是一种安全机制,用于防止不同应用之间互相访问 作用:就是存储数据,每个沙盒就相当于每个每个应用的系…

1688商品详情关键词数据-API

要利用 Python 爬虫采集 1688 商品详情数据,需要先了解 1688 网站的页面结构和数据请求方式。一般使用 requests 库请求网站的数据,使用 BeautifulSoup 库解析网页中的数据。 以下是一个简单的 Python 爬虫采集 1688 商品详情数据的示例代码&#xff1a…

红队老子养成记2 - 不想渗透pc?我们来远控安卓!(全网最详细)

大家好,我是Dest1ny。 今天我们是红队专题中的远控安卓。 这个实验会非常有趣,大家多多点赞! 环境: 一台有公网ip的vps / kali / 带msf工具即可 一台安卓手机(最好老一点,因为我们这里不涉及免杀&#…