基础库 v3.4.0 及以上版本开始支持,开发者工具请使用大于等于 v1.59.20 的版本
开发者可以通过配置,在进入小程序某个页面时,由框架自动预下载可能需要的分包,提升进入后续分包页面时的启动速度。对于独立分包,也可以预下载主包。
分包预下载目前只支持通过配置方式使用,暂不支持通过调用API完成。
vConsole 里有 preloadSubpackages 开头的日志信息,可以用来验证预下载的情况。
预下载分包行为在进入某个页面时触发,通过在 app.json 增加 preloadRule 配置来控制。
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"pages": [
"pages/pageOne",
"pages/pageTwo"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/pageThree",
"pages/pageFour"
]
}
],
"preloadRule": {
"pages/index": {
"network": "all",
"packages": ["packageA"]
},
"pages/logs": {
"network": "wifi",
"packages": ["pack2"]
},
"packageB/pages/pageThree": {
"network": "wifi",
"packages": ["__APP__"]
}
}
}
preloadRule 中,key 是页面路径,value 是进入此页面的预下载配置,每个配置有以下几项:
字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| packages | Array | 是 | 无 | 进入页面后预下载分包的 root 或 name ,root 或 name 必须严格等于 subpackages 中配置的 root 或 name ,否则不会生效,name 的优先级比 root 高。 __APP__ 表示主包。 |
| network | String | 否 | wifi | 在指定网络下预下载,可选值为: all : 不限网络;wifi : 仅wifi下预下载 |
同一个分包中的页面享有共同的预下载大小限额 2M,限额会在工具中打包时校验。
如,页面 A 和 B 都在同一个分包中,A 中预下载总大小 0.5M 的分包,B中最多只能预下载总大小 1.5M 的分包。