分包预下载

分包预下载规则

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

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

全局配置方法:

  • JSON
  1. {
  2. "pages": ["pages/index"],
  3. "subPackages": [
  4. {
  5. "root": "important",
  6. "pages": ["index"]
  7. },
  8. {
  9. "root": "sub1",
  10. "pages": ["index"]
  11. },
  12. {
  13. "name": "hello",
  14. "root": "path/to",
  15. "pages": ["index"]
  16. },
  17. {
  18. "root": "sub3",
  19. "pages": ["index"]
  20. }
  21. ],
  22. "preloadRule": {
  23. "pages/index": {
  24. "network": "all",
  25. "packages": ["important"]
  26. },
  27. "sub1/index": {
  28. "packages": ["hello", "sub3"]
  29. },
  30. "sub3/index": {
  31. "packages": ["path/to"]
  32. }
  33. }
  34. }

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

字段类型必填默认值说明
packagesArray.<string>进入页面后预下载分包的 root
networkStringwifi在指定网络下预下载,有效值为:
all:不限网络
wifi:仅 wifi 下预下载

常见问题

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

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

代码示例

  • JSON
  1. {
  2. "pages": ["pages/index"],
  3. "subPackages": [
  4. {
  5. "root": "sub1",
  6. "pages": ["index"],
  7. },
  8. {
  9. "name": "hello",
  10. "root": "path/to",
  11. "pages": ["index"]
  12. }
  13. ],
  14. "preloadRule": {
  15. "pages/index": {
  16. "network": "all",
  17. "packages": ["hello", "sub1"]
  18. }
  19. }
  20. }