微信小程序 自动解决分包大小问题_微信小程序分包加载功能

本文介绍了微信小程序的分包加载功能,旨在解决包大小限制问题。开发者可通过配置game.json进行分包,并使用wx.loadSubpackage API来触发分包下载,监控下载进度。在基础库2.1.0以下版本需考虑兼容性处理,目前Android存在无法加载分包字体文件的已知问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信小程序分包加载功能

来源:  发布日期:2018/6/15  指数:2729

随着微信小程序和微信小游戏的玩法越来越丰富,微信小程序开发者对于扩大包大小的需求越来越强烈,所以微信官方团队推出了小游戏分包加载这个功能。所谓的微信小程序分包加载,即把游戏内容按一定规则拆分这几包,在首次启动时先下载必要的包,这个必要的包称之为「主包」,微信小程序开发者可以在主包内触发其它分包的下载,从而把首次启动的下载耗时分散到游戏运行中。目前微信小程序分包加载大小的限制为: 整个小游戏所有分包大小不超过 8M和单个分包/主包大小不能超过 4M。

微信小程序分包加载功能

微信小程序分包加载的使用方法

1. 分包配置

需要先在 game.json 配置分包信息。

假设游戏的目录结构如下:

├── game.js

├── game.json

├── images

│ ├── a.png

│ ├── b.png

├── stage1

│ └── game.js

│ └── images

│ ├── 1.png

│ ├── 2.png

└── stage2.js

game.json 中的配置:

{

...

subpackages: [

{

name: 'stage1',

root: 'stage1/' // 可以指定一个目录,目录根目录下的 game.js 会作为入口文件,目录下所有资源将会统一打包

}, {

name: 'stage2',

root: 'stage2.js' // 也可以指定一个 JS 文件

}

]

...

}

配置在 subpackages 字段内的目录或 js 文件,将按照配置打包成一个个「分包」,没有配置在 subpackages 中的目录和 js,将会被打包到主包中。

2. 分包加载

我们提供了 wx.loadSubpackage() API 来触发分包的下载,调用 wx.loadSubpackage 后,将触发分包的下载与加载,在加载完成后,通过 wx.loadSubpackage 的 success 回调来通知加载完成。

同时,wx.loadSubpackage 会返回一个 LoadSubpackageTask,可以通过 LoadSubpackageTask 获取当前下载进度。

示例代码:

const loadTask = wx.loadSubpackage({

name: 'stage1', // name 可以填 name 或者 root success: function(res){ // 分包加载成功后通过 success 回调 },

fail: function(res){ // 分包加载失败通过 fail 回调 }

})

loadTask.onProgressUpdate(res => { console.log('下载进度', res.progress) console.log('已经下载的数据长度', res.totalBytesWritten) console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)

})

老版本兼容

由微信后台编译来处理旧版本客户端的兼容,后台会编译两份代码包,一份是分包后代码,另外一份是整包的兼容代码。对于老客户端,会去下载整包代码启动。

开发者在基础库 2.1.0 以下的版本不需要调用 wx.loadSubpackage 触发加载,2.1.0 以下版本不存在 wx.loadSubpackage 方法。

已知 BUG

目前 Android 无法加载分包下的字体文件,预计在下个微信客户端版本修复。

LoadSubpackageTask wx.loadSubpackage(Object object)

基础库 2.1.0 开始支持,低版本需做兼容处理

触发分包加载,详见 分包加载

参数

Object object

属性

类型

默认值

是否必填

说明

支持版本

name

function

分包的名字,可以填 name 或者 root

success

function

分包加载成功回调事件

fail

function

分包加载失败回调事件

complete

function

分包加载结束回调事件(加载成功、失败都会执行)

返回值

LoadSubpackageTask

加载分包任务实例,用于获取分包加载状态

LoadSubpackageTask.onProgressUpdate(function callback)

基础库 2.1.0 开始支持,低版本需做兼容处理

监听分包加载进度变化事件

参数

callback

监听事件的回调函数

callback 回调函数

参数

res

属性

类型

说明

支持版本

progress

number

分包下载进度百分比

totalBytesWritten

number

已经下载的数据长度,单位 Bytes

totalBytesExpectedToWrite

number

预期需要下载的数据总长度,单位 Bytes

关键词:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值