由于小程序有2m的大小限制,所以很多情况下我们不得不采取分包的办法,来避免超过大小。
微信小程序每个分包的大小是2M,总体积一共不能超过20M。
1、 创建分包目录
在项目根目录下创建分包目录,将需要分包的页面统一放入该目录,可创建多个分包目录,对应不同的分包策略。
一般来讲,我习惯于将分包目录命名为pages_sub_xxx,与原本的pages主目录区分开来。
2、分包配置(pages.json)
// 分包加载,数组对象形式配置,多个分包目录配置多个对象即可
"subPackages": [{
"root": "pages_sub_xxx", // 子包的根目录,相对于项目根目录的绝对路径
"pages": [{
"path": "test/test", // 页面路径,相对于子包目录的相对路径
"style": {
"navigationBarTitleText": "测试", // 页面标题
"enablePullDownRefresh": false // 是否开启下拉刷新
}
}]
}]
3、开启分包优化(manifest.json)(可选)
目前只支持mp-weixin、mp-qq、mp-baidu、mp-toutiao的分包优化
"globalStyle": {
// 编译到微信小程序样式
"mp-weixin": {
// 开启小程序端分包优化
"optimization":{"subPackages":true}
}
}
// 从 uni-app 2.7.12+ 开始,App-vue 平台也兼容了小程序的分包配置,但默认并不开启。
// 在 manifest 配置以下节点,可以在 App 端启动分包。
"app-plus": {
"optimization": {
"subPackages": true
},
"runmode" : "liberate" // 开启分包优化后,必须配置资源释放模式
}
4、分包预加载(manifest.json)(可选)
配置 preloadRule 后,在进入小程序某个页面时,由框架自动预下载可能需要的分包,提升进入后续分包页面时的启动速度
// 分包预加载
"preloadRule": {
// "pages/my/my" 也可以是某个子包的页面,eg:pages_sub_xxx/test/test
"pages/my/my": {
"network": "all",
"packages": ["pages_sub_xxx"] // 子包 root
}
}