微信小程序の分包

使用场景&限制

  1. 优化小程序启动时加载事件,协同开发进行解耦
  2. 限制:
    (1) tabbar或者首屏使用的文件不能进行分包
    (2) 单个小程序打包大小不能超过2MB,使用分包总体小程序包体积不能大于20MB

值得注意:

如果需要分包,应该在小程序开发前期就规划好,定下基础模块,防止往后开发改造目录结构带来麻烦

使用分包

  1. 在根目录下简历packageModeName(模块名称)的文件夹

    每个文件夹其实都是一个小程序开发目录,可以在里面定义assets,pages等等(app.js这些不需要配置)
    小程序分包目录结构

  2. 配置路由

    分包后,将app.json文件中分包的文件路由进行相应的删除
    将微信路由跳转api的路径也进行相应的更改
    url: ‘/分包模块名称/pages/….’

  3. subPackage配置(分包配置属性)

    app.json文件配置分包属性
    "subPackages": [    // 配置分包属性
        {
            "root":"packageDetail",  // 分包根目录名称(分包模块名称)
            "name":"pDetail",        // 分包根目录别名,可以不写
            "pages":[                // 分包路由配置
                "pages/detail-search/index",
                "pages/detail-songs/index",
                "pages/detail-video/index"
            ]
        }
    ]

独立分包

定义: 所有功能(组件依赖,方法依赖)完全不依赖于主包,独立存在的一个包文件
使用场景: 扫描二维码
使用: 在分包配置的对象中设置”independent” : true 属性

"subPackage":[
  {
    "root": "包模块根目录名称",
    "name": "包模块别名",
    "pages":[ ],   // 页面路由
    "independent" : true // 独立分包 属性
  }
]

值得注意:
(1) 独立分包时,app.wxss对独立分包的页面不起到作用
(2) 独立分包完全不能依赖主包,相当于做一个独立的页面嵌进应用内
(3) App只能在主包定义,独立分包不行(可以使用getApp方法,如果主包没有下载下来,则获取不到值)
(4) 独立分包不支持插件

分包预下载

定义: 类似于懒加载,优先把主包加载完成,之后在闲置时下载设置预下载的分包
使用: 设置preloadRule属性

"preloadRule":{
  "需要分包预下载的页面路径":{
      "newwork": "wifi/all", // 设置在哪个网络环境下可以预下载
    " packages":[ root, name ] // 设置预下载的包名,使用root/name
  }
}