一,前言
1.在小程序里主包支持最大的大小是2M
,超过了2M
就不能打包上传了。
2.我们可以在开发者工具点击依赖分析,查看大小
二,主包过大解决方法
1.首先可以分析出来,内存大小是由代码,图片,等资源组成的。所以首先考虑到就是从这降低内存
(1)删除无用的代码;
(2)压缩代码
(3)将图片放在远程服务器上,没有用上的图片删除
2.当超出的内存不多的时候,这在一定程度上能解决一些问题,另一个方法就是使用分包
三,分包
1.分包是解决主包过大问题的主要方法,
2.每个分包大小也不能超过2M
, 所有包加起来不超过20M
。
2.在app.json
里subpackages
字段用于定义小程序的分包
3.subpackags
接受一个数组,数组的每一个元素声明了一个包。
subpackages:[{
root:'subpackages/fenbao', //定义了一个分包的路径,该路径下的所有文件都属于分包,会被打包进分包
pages:['page1','pages2']
},{
root:'subpackages/fenbao1', //定义了分包的路径,该路径下的所有文件都属于分包,会被打包进分包
pages:['page1','pages2']
},{
root:'packageB/pages', //定义了分包的路径,该路径下的所有文件都属于分包,会被打包进分包
pages:['apple','banana']
}]
uni-app分包语法
//json中
subpackages:[{
root:'subpackages/fenbao', //定义了一个分包的路径,该路径下的所有文件都属于分包,会被打包进分包
pages:[{path:'page1',style:{...}}]
}]
//manifest.json中
// "mp-weixin"
"optimization":{
"subPackages":true //是否启用分包优化
}
4.注意只有在subpackages
的root
下定义的文件才会被打包进分包
├── app.js
├── app.json
├── app.wxss
├── subpackages //目录名称可以任意命名只要和subpackages的root对应的上即可
└── others //注意,未定义,不属于分包
│ └── fenbao //注意,只有在subpackages里定义了路径,该路径和下面的包,才会处于一个分包中
│ ├── page1 //属于fenbao
│ └── pages2 //属于fenbao
└── fenbao2
│ ├── page1 //属于fenbao2
│ └── pages2 //属于fenbao2
├── packageB
│ └── pages
│ ├── apple
│ └── banana
├── pages
│ ├── index
│ └── logs
└── utils
根据上面的定义,图中三个红框分包为三个分包
四,分包注意事项
1.tabar
页不能放在分包中
2.一个分包不能使用另一个分包的js
和静态资源
3.分包中可以使用主包的资源和app
实例
4.同一个分包下的页面,可以使用分包内的资源