分包预下载

# 分包预下载规则

功能介绍:开发者可以通过配置,在进入小程序某个页面时,由框架自动预下载可能需要的分包,提升进入后续分包页面时的启动速度。

分包预下载目前既支持通过全局配置方式使用,也支持开发者通过调用 API 完成。
API 调用方式参考:loadSubPackage

全局配置方法:

{
    "pages": ["pages/index"],
    "subPackages": [
        {
            "root": "important",
            "pages": ["index"],
        },
        {
            "root": "sub1",
            "pages": ["index"],
        },
        {
            "name": "hello",
            "root": "path/to",
            "pages": ["index"]
        },
        {
            "root": "sub3",
            "pages": ["index"]
        }
    ],
    "preloadRule": {
        "pages/index": {
            "network": "all",
            "packages": ["important"]
        },
        "sub1/index": {
            "packages": ["hello", "sub3"]
        },
        "sub3/index": {
            "packages": ["path/to"]
        }
    }
}

preloadRule 中,key 是页面路径,value 是进入此页面的预下载配置,每个配置有以下几项:

字段 类型 必填 默认值 说明
packages StringArray 进入页面后预下载分包的 root。
network String wifi 在指定网络下预下载,有效值为:
all: 不限网络
wifi: 仅 wifi 下预下载

# 常见问题

# Q:这个分包预加载只能加载一个分包吗

A:端能力的 root 参数为 string 类型,只能配置一个。但是可以通过 app.json 中的 preloadRule 配置多个子包。

代码示例:

{
    "pages": ["pages/index"],
    "subPackages": [
        {
            "root": "sub1",
            "pages": ["index"],
        },
        {
            "name": "hello",
            "root": "path/to",
            "pages": ["index"]
        }]
    ],
    "preloadRule": {
        "pages/index": {
            "network": "all",
            "packages": ["hello", "sub1"]
        }
    }
}