vue2老项目打包优化:优化脚本生成的代码

news2024/11/15 17:28:25

前言

上次讲到在一个 vue-cli 的老项目中,修改 vue.config.js 的以下参数,将打包时间从 40min ,降到了 12min

{
    parallel: true, // 多核处理,按理说默认应该生效,但我的文件被设置成了false
    runtimeCompiler: false, // 当然这是默认值,但我的文件被设置成了true
    productionSourceMap: false // 不需要生产环境的 source map
}

那么本次继续进行优化,将从生成文件的过程进行入手。

生成文件的现状

内容

大部分都是 json 配置文件,直接使用了 json 赋值写入到了文件中。

数量

50+200+ 不等,不排除上千的可能。

症状分析

首先,写入文件的脚本大概如下:

echo "export const ${filename} = ${jsoncontent}" > "${filename}.js"

此脚本循环写入了文件

大胆猜测一下:

json这样的格式,本身的意义就是js的子集,毕竟它的全称是JSON(JavaScript Object Notation)。

也就是说极有可能这份生成的文件,在编译的过程中被解析了变量名,变量值等的对应关系,一个完整的脚本。

但是,实际上这些配置文件它的变量名变量值仅在使用时才有意义,编译时根本无所谓是什么,只要能够带走即可。

那么大胆假设已经有了,接下来直接求证。

验证方案

测试机:MacBook Air M3 16G

修改之前:

按照之前的假设,我们将写入文件的脚本修改为:

echo "export const ${filename} = JSON.parse(\`${jsoncontent}\`)" > "${filename}.js"

也就是说我们写入的是 json 字符串,而非直接成了一个对象,按理说处理一个字符串,编译的时候不会有那么大的压力。

修改之后:

可以看到打包时间有了显著的提升。

写在最后

最后,这份修改放到了Jenkins的打包脚本中(非本地环境了),打包时间从12min,降低到了 9min

接下来还能继续操作的优化方式还有缩小脚本体积、依赖分包、构建的缓存等等。

等我继续操作起来。

– 欢迎点赞、关注、转发、收藏【我码玄黄】,各大平台同名。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

spring学习日记-day7-整合mybatis

一、学习目标 spring整合MyBatis的原理主要涉及到将MyBatis的Mapper映射文件交由Spring容器管理,并将其注入到MyBatis的SqlSessionFactory中,从而实现两者的整合。 二、整合mybatis 1.写一个mybatis测试案例 项目结构: 1.数据库 CREATE DA…

高考技术——pandas使用

百家讲坛,谈论古今,今天我们不聊别的,我们来聊一聊中国的国宝——大熊猫(bushi) 好好,言归正传,我们今天来讲pandas import pandas as pd 申明无需多言,高考主要考察Series和Data…

区块链媒体推广:15个数字解读未来-华媒舍

区块链技术性作为一种区块链技术和加密的数据帐簿技术性,正在逐步引起广泛关注。伴随着新闻媒体市场的发展,区块链媒体推广也成为了新的发展趋势。下面我们就带大家探寻15个数字,揭露将来区块链媒体推广的新方向。 1、网络传播年增长率 数字…

Mac 网络连接正常,微信可以使用,但浏览器打不开网页?

解决: Step1,选择🍎图标,选择系统设置(或系统偏好设置)打开; Step2,选择网络,Wi-Fi Step3,选择详细信息; Step4: 选择代理,关闭右…

每日OJ题_牛客_JOR26最长回文子串_C++_Java

目录 牛客_OR26最长回文子串 题目解析 C代码1 C代码2 Java代码 牛客_OR26最长回文子串 最长回文子串_牛客题霸_牛客网 描述: 对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法&#xf…

Redis: 持久化之RDB和AOF

概述 Redis 有一个高质量的课题:数据安全性与数据可靠性Redis 是一个内存型数据库,数据大部分都是存在内存里面当信息在内存中流通时,Redis 节点突然就故障挂掉当重新启动的时候,内存中的数据肯定是全部丢失了如果在这种情况下&a…

MySQL 中如何优化 DISTINCT 查询

一、引言 在 MySQL 数据库中,DISTINCT关键字用于查询结果集中去除重复的行。然而,使用DISTINCT可能会导致查询性能下降,特别是在处理大量数据时。本文将介绍一些优化 MySQL 中DISTINCT查询的方法。 二、理解 DISTINCT 查询的性能影响 &…

Oracle中TRUNC()函数详解

文章目录 前言一、TRUNC函数的语法二、主要用途三、测试用例总结 前言 在Oracle中,TRUNC函数用于截取或截断日期、时间或数值表达式的部分。它返回一个日期、时间或数值的截断版本,根据提供的格式进行截取。 一、TRUNC函数的语法 TRUNC(date) TRUNC(d…

2024/10/2

1 线代内积和外积 2 在 PyTorch 中,x.dot(torch.ones(3)) 是执行向量点积(dot product)操作的代码。假设 x 是一个一维张量(向量),其形状是 (N,),且 N 应该与 torch.ones(3) 的长度相匹配。具…

查找与排序-插入排序

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序…

java基础应用-循环控制

1、使用while与自增运算符循环遍历数组 1.1 实例说明 本实例利用自增运算符结合while循环获取每个数组元素的值,然后把它们输出到控制台中。其中自增运算符控制索引变量的递增。程序运行结果如图1所示。 图1 实例运行结果 1.2 实现过程 创建ErgodicArray类&#…

企业网盘预算规划,了解2024年最新价格标准

2024年全球企业云存储市场将增15%,企业网盘收费多样,包括用户数量、存储容量定价及综合功能套餐。ZohoWorkDrive、DropboxBusiness、GoogleWorkspace为主流选择,价格因企业规模、功能需求而异,建议灵活选择套餐和长期合作计划。 一…

yub‘s Algorithmic Adventures_Day3

yub’s Algorithmic Adventures_Day3 有序数组的平方 link:977. 有序数组的平方 - 力扣(LeetCode) 非递减顺序 一个数列中的元素从左到右依次不减,或者说不降序排列. 比如:1233445,12345. 思路分析 如果…

CORE MVC 过滤器 (筛选器)《2》 TypeFilter、ServiceFilter

TypeFilter、ServiceFilter ServiceFilter vs TypeFilter ServiceFilter和TypeFilter都实现了IFilterFactory ServiceFilter需要对自定义的Filter进行注册,TypeFilter不需要 ServiceFilter的Filter生命周期源自于您如何注册(全局、区域)&…

vite中sass警告JS API过期

1.问题 在Vite创建项目中引入Sass弹出The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0 - vite中sass警告JS API过期 The legacy JS API is deprecated and will be removed in Dart Sass 2.0.0警告提示表明你当前正在使用的 Dart Sass 版本中&#…

Python画图|渐变背景

Python画图在有些时候,需要使用渐变过度。 在matplotlib官网中,提供了一个为柱状图画渐变背景的案例,我们一同探索一番。 【1】官网教程 点开下述链接,直达官网教程: https://matplotlib.org/stable/gallery/lines…

【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误

解决 Ubuntu 中 “Unable to Find Python3 Executable” 错误 在 Ubuntu 系统上使用 Python 进行开发时,遇到找不到 python3 可执行文件的错误。 主要问题是无法正常打开终端(原生与terminator),找不到python3,且无法…

基于muduo库函数实现protobuf协议的通信

文章目录 先定义具体的业务请求类型2. 实现服务端提供的服务protobuf_server.cppprotobuf_client.cpp 建议先去了解muduo库和protobuf协议: Protobuf库的使用Muduo库介绍及使用 先定义具体的业务请求类型 先使用protobuf库创建我们所要完成的业务请求类型&#xf…

域内用户名枚举 实验

1. 实验网络拓扑 kali: 192.168.72.128win2008: 192.168.135.129 192.168.72.139win7: 192.168.72.149win2012:(DC) 192.168.72.131 2. 简单原理 详细的报文分析在之前写过了,这里简单提一提。 利用的是Kerberos的AS阶段,AS_REP的回显不同&#xff0c…

迷宫中的最短路径:如何用 BFS 找到最近出口【算法模板】

如何通过广度优先搜索(BFS)求解迷宫问题 在这篇文章中,我们将学习如何使用 广度优先搜索(BFS) 解决一个典型的迷宫问题,具体是从迷宫的一个入口出发,找到最近的出口。我们将一步步分析 BFS 是如…