为什么要分包
- 小程序是动态加载(没有下载)
主包限制2M内容,通过分包可以上传大约16M内容(大型小程序),分包是很有必要的 - 即使小程序主包只有2M,下载打开小程序是比较慢
主包只有一个页面,切换其它页面,加载分包内容(优化主页加载速度)
小程序包的种类和配置:
- 主包,就是在page.json中pages中注册的页面,属于小程序主包
- 普通分包,在page.josn中subpackages这个数组属性中添加对象,root:包根目录(sub),pages:包含的包路径
- 独立分包,需要在page.josn中subpackages这个数组属性中添加对象,在这个对象中多一个independent这个属性值为true即可
"subpackages": [{
"root": "sub",
"pages": [
"pages/vant/vant"
],
independent: true
}],
分包的加载
- 分包只有在进入页面后才加载(如果包比较大,进入页面等待时间较长)
- 进入指定页面预加载:当进入到/pages/login/login页面时,并且网络有空闲时,所有网络预加载分包sub
"preloadRule": {
"pages/login/login": {
"network": "all",
"packages": ["sub"]
}
}
哪些做主包,哪些做分包
1.底部栏页面做主包
2. 二级页面做分包
三种包的区别
-
在小程序主包页面渲染完成,所有的页面会加载一遍,生成app实例 (tabbar必须在主包内)主包中的页面全部加载
-
普通分包在主包完成后要跳转到普通包页面,这时候会加载普通分包的内容,这时可以getApp这个实例 按需加载
-
独立分包可以独立于主包存在,默认获取不到getApp,可以通过allowDefault属性来获取 getApp({allowDefault:true}) 按需加载
-
目前小程序分包大小有以下限制:(1)整个小程序所有分包大小不超过 16M (2)单个分包/主包大小不能超过 2M