小程序 subPackages


# 原因

打包时把所有的包都集中在一起 如果文件过大会造成第一次进入加载时间过长
避免这种情况的发生可以使用分包的形式 进行分包后的小程序分为: 主分包 分包
注意的是 tabBar 页面 必须放在主分包里面
分包有两种 独立分包普通分包 且不能嵌套只能是并列关系

  1. 独立分包 不需要依赖主分包即可自己运行 只能访问自己的资源
  2. 普通分包 需要让主分包运行才可以运行 可以 访问主包的公共资源 但是 分包的私有资源之间是不可以互相访问的
  3. 分包预下载 :进入小程序某个页面时 下载用户下一个需要的分包 从而提升进入后续分包的速度 一个页面的预下载不能超过 2MB
    分包 subpackages

# 原生修改配置

在根目录的 app.json 配置 subPackages

# 普通分包

{
  "pages": [],
  "tabbar": {},
  "subPackages": [
    {
      "root": "pageA",
      "name": "PAGEA",
      "pages": [
        "pages/catA/catA",
        "..."
      ]
    },
    {
      "root": "pageB",
      "name": "PAGEB",
      "pages": [
        "pages/catB/catB",
        "..."
      ]
    }
  ],
}

# 独立分包

变为独立分包只需要在对应的分包里添加一个 关键字: independent 设置为 true 即可

{
  "pages": [],
  "tabbar": {},
  "subPackages": [
    {
      "root": "pageA",
      "name": "PAGEA",
      "pages": [
        "pages/catA/catA",
        "..."
      ],
      "independent": true
    }
  ],
}

# 分包预下载

分包预下载限制
在顶层添加 preloadRule 字段

network 那一种网络进行预下载 all 所有 wifi 要对应网络才下载
packages 分包名字 或者 分包的路径
官方

{
  "pages":[],
  "window":{},
  "subPackages": [
    {
      "root": "pageA",
      "name": "PAGEA",
      "pages": [
        "pages/catA/catA"
      ]
    }
    
  ],
  "preloadRule": {
    "pages/contact/contact": {
      "network": "all",
      "packages": ["pageA"]
    }
  },
  "tabBar": {
    "list": [{
      "pagePath": "pages/home/home",
      "text": "home"
    },{
      "pagePath": "pages/message/message",
      "text": "message"
    }]
  }
}

文章作者: 神奈川
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 神奈川 !
  目录