微信小程序采用的是类似离线包加载方案,以 转转小程序 为例,当用户第一次打开时会先下载好所有代码,然后再加载页面;当用户再次进入转转小程序时,会直接使用已下载的代码,省去了代码下载的过程,打开速度更快。
看似很美好的设计,但有两个问题:
问题看似不大,但对转转有很大影响,例如进行微信广告投放时,用户从点击广告到加载第一个页面之间的流失率竟能到达 40% ,这显然是 FE 无法接受的性能,而小程序分包加载机制能够在一定程度上解决上述问题。
小程序的分包加载机制实际上是离线包和 M 页的一种结合机制,即你可以把代码划分成主包 +N 个分包,官方定义:
在小程序启动时,默认会下载主包并启动主包内页面,如果用户需要打开分包内某个页面,客户端会把对应分包下载下来,下载完成后再进行展示。
总结如下:
这样的好处是进入主包页面时,需要下载的代码量小了很多,白屏时间更短,体验更佳。
转转小程序在使用分包之前,压缩后的代码量大概是2.45M,也就是说,每个新用户第一次都需要下载的2.45M代码才能进入页面,使用分包机制后,主包大小降为1M左右,也就是说,如果是进入主包页面, 下载时间大约降低了60%
文件结构:
├── libs ├── components ├── pages 主包根目录 ├────index 首页 ├────post 发布页 ├────... ├── subPages 分包根目录 ├────trade 交易分包 ├────mine 我的页面分包 ├────... 复制代码
我们根据用户访问的轨迹,分成了 20 个左右的分包。 例如 trade 包,里面包含详情页、下单页、支付页、支付成功页等,这条线的页面,用户可能不需要一进入小程序就使用,但一旦使用可能是使用整个链条,因此可以作为一个分包。
一个页面放入分包之后,路径会发生变化,例如详情页由 /pages/detail 变为 /subPages/trade/detail,意味着如果用户访问了以前的 page 则得不到正确的页面响应(例如:分享出去的小程序卡片、二维码、公众号推送消息等),这些静态不可改变的历史入口怎么办?我们目前采用如下方案:
原来主包内的每个页面都保留,但代码只保留跳转逻辑,用户进来后立即跳到对应的分包页面,用户几乎是无感知的
这样也会产生一点小问题:这些跳转页面也占用一定的空间,接下来我们会优化成在 onLaunch、页面跳转时进行判断,直接跳入正确的分包页面。
以上是转转在分包加载方面的实战记录,更多小程序开发内容,请查看本网站,谢谢。
小程序工具提供多类型商城/门店小程序制作,可视化编辑 1秒生成5步上线。通过拖拽、拼接模块布局小程序商城页面,所看即所得,只需要美工就能做出精美商城。更多小程序商店请查看:小程序商店
KESION 科汛软件
KESION 科汛软件是国内领先的在线教育软件及私域社交电商软件服务提供商,长期专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。
公司核心产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化独立部署品牌网校和在线教育咨询等。KESION 不断通过技术创新,提供产品和服务,助力企业向数字化转型,通过科技驱动商业革新,让商业变得更智慧!
使用mpvue开发小程序时,可能需要用到录音功能,可以通过使用"长按录音松开发送,上划取消发送"来实现小程序录音功能。以下为大家整理官方文档...
在我们分享小程序时,会有一个图片式的海报,这种功能显示是如何显示的,下面小编为大家解答小程序生成海报保存分享图片完全指南...