前言
- 对于一个展示型的小程序而言,势必会存在着众多的图片来展示,而UI设计师给出的图片大多数都会很大,这样就会很大程度的占据程序包的空间,而微信小程序在开发文档中明确指出,小程序的包大小必须限制在2M以内,超过大小,就算在开发者工具中都不能正常预览。此时,解决问题的办法大多有三种:
1.将图片的大小尽可能的压缩,以保证程序包顺利通过微信设置的大小阈值。(这样会造成图片的失真,而且并不能真正的解决问题)
2.将图片上传到服务器,代码中加载服务器的网络图片。(这不失为一种可靠的解决方案,这也是微信推荐使用网络图片的一个原因,但是不能保证从服务器拉取的资源能快速加载,不可控的因素很多)
3.分包加载(将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。)
分包实现
- 首先确定小程序的目录结构
这里是一个演示的项目目录结构,新建了两个目录名为packageA和packageB的文件夹,以表示分包。在两个包中可以新建pages页面目录和静态资源文件(这里只新建了images文件夹,可根据项目需求自行创建)
- 然后就是app.json的配置文件
"pages": [
"pages/index/index" //主包的入口
],
"subpackages": [ //分包
{
"root": "packageA",
"pages": [
"pages/index/index"
]
},
{
"root": "packageB",
"name": "pack2",
"pages": [
"pages/car/car"
]
}
]
subpackages
字段定义了程序的分包情况,接收一个Array
数组,数组的每一个元素代表一个包。每个数组中包含了root
字段和pages
字段,分别代表当前包的根目录和当前包下的页面路径。
注意事项
- 每一个包里的静态资源文件是相对封闭的,不能相互引用。
- 小程序定义的
tabBar
必须定义在程序的主包内。 - 每个包定义的
root
字段是独立的,A包的根目录不能在B包的子目录中。 subpackages
字段的写法和subPackages
是一样的,没有过分强调。- 整个小程序所有分包大小不超过 8M,单个分包/主包大小不能超过 2M
这也是我在项目开发中遇到的坑,开发一半的时候发现代码包的大小超出了,在不接受将静态资源文件放在开发服务器上时,找到这样的一种方法。微信小程序设计的原则是快速,代码包太大确实也违背了这一原则。即便是分包加载,也会存在大小限制的问题,所以在开发时还是应当避免这类问题。