H5 分包实现首屏加载时间优化

H5 分包实现首屏加载时间优化

一、为什么首屏加载需要优化

因为做了很多事情:

初始化 webView -> 请求页面 -> 下载数据 -> 解析HTML -> 请求 js/css 资源 -> dom 渲染 -> 解析 JS 执行 -> JS 请求数据 -> 解析渲染 -> 下载渲染图片

dom渲染 之前用户看到的都是白屏,在 下载渲染图片 后,用户才能看到完整的页面。首屏秒开优化就是要减少这个过程的耗时。

扣除网络差的原因,对首屏启动速度影响最大的就是网络请求。由于业务需求,导致我们不得不引入很多第三方包来实现功能,这些包恰恰会容易影响到网络请求。

这里我们把大体积的包,分成多个小体积的包进行加载,减少请求时间

二、分析产物

通过分析产物来查看打出来的包内容占比

yarn build

打完包后如果出现下面黄色文字,说明打出来的包体积过大,我们用百度翻译来看下解释:
在这里插入图片描述

束的大小明显大于推荐值。
考虑使用代码拆分来减少它:https://goo.gl/9VhYWB
您还可以分析项目依赖关系:https://goo.gl/LeUzfb

你的包大小超过了推荐值,可以通过分析项目依赖进行的分包处理。

umialita 项目中,执行 ANALYZE=1 umi buildANALYZE=1 alita build 来分析下产物。

在这里插入图片描述

我们可以看到经过压缩后的 umi.js 还有 1.2M 的大小。

在这里插入图片描述

umi.js 下最大的包是笔者引入的 echarts,有 211kb 的大小,这里只是引入了一个 echart 包,如果项目中,多引入一些大体积包的话,那么 umi.js 的大小就不是 1M 而会更大,在首屏加载时,请求这些数据就严重影响到了下载和渲染时间。

这时,对包的拆解就显得尤为重要了。

三、分包实现

打开 config/config.ts 文件(如果是 umi2 的项目则是 .umirc.js)

export default {
   
  chainWebpack(config) {
   
    config.optimization.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值