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

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

【前言】

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

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

问题1:如果在弱网环境下,会造成首次白屏时间过长
问题2:容易产生同名文件,造成浏览器缓存

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

优化前,dist里的js文件列

前端优化2-1.png

【打包分析】

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

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

前端优化2-2.png

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

以下是生成的report.html,也就是项目的打包分析图

前端优化2-3.png

【依赖拆包】

从打包分析图可直观看出项目所有的依赖包小大,以及其归属关系;
可以看出,echarts、element-ui占去了近乎50%的空间大小。

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

前端优化2-4.png

前端优化2-5.png

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

前端优化2-6.png

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

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

前端优化2-7.png

再将其拆包

前端优化2-8.png

后面将lodash分包,如法炮制

前端优化2-9.png

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

【文件哈希值】

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

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

前端优化2-10.png

然后,生成的js文件直接被放入了dist文件夹第一层,与index.html同层,倒也不影响项目正常运行,但是处于强迫症,还是解决了一下,直接给它添加文件路径就行。

不存在的文件夹,webpack会自动创建,这点也佩服webpack的强大

前端优化2-11.png

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

前端优化2-12.png

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

相关文章
|
1月前
|
前端开发
前端引入字体文件
文章介绍了如何在前端项目中引入字体文件,并展示了具体的HTML和CSS代码示例,包括如何使用`@font-face`规则来定义字体和在页面中应用自定义字体。
51 1
前端引入字体文件
|
1月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
33 2
前端JS读取文件内容并展示到页面上
|
4天前
|
JSON 前端开发 JavaScript
前端模块打包器的深度解析
【10月更文挑战第13天】前端模块打包器的深度解析
|
4天前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
4天前
|
前端开发 JavaScript 开发工具
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
从零开始:构建、打包并上传个人前端组件库至私有npm仓库的完整指南
21 0
|
5天前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
7 0
|
5天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
35 0
|
5天前
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
32 0
|
1月前
|
前端开发
前端diff文件对比使用worker进行优化
如何使用Web Worker在React项目中优化文件对比差异功能的实现。
38 5
|
5天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。