首页 > 其他分享 >前端优化之路:打包文件拆包、增加哈希值

前端优化之路:打包文件拆包、增加哈希值

时间:2023-12-05 11:34:55浏览次数:33  
标签:文件 element ui 拆包 哈希 js 打包

 

【前言】

前面对项目打包做了优化处理,但是还不够完美,有两点可继续优化

  1. 生成的chunk-vendors文件过大,压缩后仍然超过1M
  2. 开发、测试环境生成的js文件,未带哈希值

问题1:如果在弱网环境下,会造成首次白屏时间过长

问题2:容易产生同名文件,造成浏览器缓存

出于以上两点考虑,故而需继续对项目优化处理,以求精益求精

 
优化前,dist里的js文件列


 【打包分析】

先来解决问题1,需要继续对chunk-vendors文件进行拆包处理

拆包之前,需要清楚项目里各个模块依赖包的大小,方便清楚哪些模块需要拆包处理,对于这点,vue-cli中有提供命令,在package.json里配置这行命令就行

 

而后,在项目终端,输入 npm run report,等待一会后,项目里会自动生成一个dist包,并且在与index.html同级有一个report.html,本地打开至浏览器就行
 
以下是生成的report.html,也就是项目的打包分析图

 

【依赖拆包】

从打包分析图可直观看出项目所有的依赖包小大,以及其归属关系

可以看出,echarts、element-ui占去了近乎50%的空间大小

需要对这两个大模块单独拆包

 

 
由于echarts包过大,分包后仍旧过大,考虑到将其由全局引入改为局部引入,也就是按需引入,结果意外发现,项目里根本未使用echarts,却将其挂载在vue实例上,也就是说全局引入了一个压根不用的echarts包,造成了资源浪费,故而直接将其注释

 

 

 

解决了echarts包问题,现在该element-ui了,分包后也仍然很大,这就需要再次拆包,不难发现,element-ui的lib目录有两个大文件,一个是element-ui.common.js,另一个是utils文件夹,那么就好办了。

 

首先,需要在element-ui组里加入这个属性,允许将其拆包至其他分组

 


再将其拆包

 


后面将lodash分包,如法炮制

 
到现在,问题1的包过大问题,顺利解决。

 

【文件哈希值】

问题2是由于js文件未生成哈希值

将configureWebpack对象改成函数写法,暴露其内部设置,直接赋值文件名,哈希值多少位可以自由定义,如下设置了带有4位哈希值的文件名。

 

然后,生成的js文件直接被放入了dist文件夹第一层,与index.html同层,倒也不影响项目正常运行,但是处于强迫症,还是解决了一下,直接给它添加文件路径就行,不存在的文件夹,webpack会自动创建,这点也佩服webpack的强大

 

解决了问题1、问题2,现在来试试成果吧

 

目前最大的包,压缩后不过600k,依赖包element-ui被如愿以偿地拆分,并且文件后缀也加上了哈希值,完结撒花~

 

标签:文件,element,ui,拆包,哈希,js,打包
From: https://www.cnblogs.com/wx3091/p/17876844.html

相关文章

  • 修改python打包后的窗体图标、任务栏图标、exe图标
    前言我python开发的GUI界面(图形用户界面)一直是tkinter,打包exe一直是Pyinstaller。但是打包出来的exe图标、状态栏图标、窗体左上角图标一直是默认的羽毛,我想自定义。效果最后使用base64创建临时ico解决了该问题步骤创建icoToBase64.py,内容如下:importbase64#ico......
  • openssh8.8版本rpm打包
    1.下载opensshtar包wgethttps://mirror.leaseweb.com/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gzhttps://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-8.8p1.tar.gz下载x11-ssh-askpass-1.2.4.1.tar.gz源码包wgethttps://src.fedoraproject.org/repo/p......
  • 关于vue如何在本地直接运行打包后的网页
    使用npmrunbuild可以对vue项目进行打包 生成文件夹dist,里面的html只能放在服务器查看效果,在本地打开会报错 这是因为vue-cli打包时,默认的publicPath路径是'/'只需要在vue.config.js文件中将publicPath路径改为 './' 或 ''  如果服务器上需要增加一层路径,也是......
  • Leetcode刷题day5-哈希表.异位词.交集.快乐数.两数和
    242.有效的字母异位词242.有效的字母异位词-力扣(LeetCode)给定两个字符串 _s_ 和 _t_ ,编写一个函数来判断 _t_ 是否是 _s_ 的字母异位词。注意:若 _s_ 和 _t_ 中每个字符出现的次数都相同,则称 _s_ 和 _t_ 互为字母异位词。示例 1:输入:s="anagram",......
  • ABC 331 F - Palindrome Query(字符串哈希,树状数组)
    字符串哈希[OI-Wiki](字符串哈希-OIWiki(oi-wiki.org))分为两种哈希方式:以左为高位和以右为高位如果只是快速查询每个字串的哈希值,用以左为高位比较简单,即\[Hash[l...r]=Hash[1...r]-Hash[1...(l-1)]\timesbase^{r-l+1}\]但是如果有修改操作,需要将每一位的Hash值存......
  • python3 打包上传pypi失败及解决方法
    1、打包及上传 1.1、安装构建和打包工具pip3installbuild#构建包的工具pip3installtwine#上传包的工具pip3installwheel#heel格式1.2创建 setup.pyfromsetuptoolsimportsetup,find_packagessetup(name='zykj-py-apollo',version='1.23.1......
  • TCP粘包/拆包,如何解决
    TCP粘包(TCPPacketStickiness):TCP粘包指的是发送方发送的多个小数据包被接收方一次性接收,形成一个大的数据包。这种情况可能会导致接收方难以正确解析消息的边界,因为多个消息被粘合在一起。TCP是面向流的协议,它不保留消息的边界信息,而是将数据流划分为小的数据块进行传输。TCP拆......
  • ideal打包
    1.路径:file--projectstructrue--sdk选择jdk版本 2.路径:file--setting---java compilerusecompiler:选择javacprotectedbytecodeversion:选择jdk版本,我这里用的是1.8版本在下边选择module:选择java程序点击apply--ok3.右侧gradle里构建jar包  最后在项目所在......
  • Inno Setup6.2.0汉化版软件打包工具(1)
    InnoSetup是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows风格的安装界面,足以完成一般安装任务。该软件用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后......
  • tar打包
    基本概述tar命令的功能是压缩和解压缩文件,能够制作出Linux系统中常见的tar、tar.gz、tar.bz2等格式的压缩包文件。对于RHEL7、CentOS7版本及以后的系统,解压缩时不添加格式参数(如z或j),系统也能自动进行分析并解压。把要传输的文件先压缩再传输,能够很好地提高工作效率,方便分享。......