小程序的分包是指将一个完整的小程序项目按照需求划分为不同的子包,构建时打包成不同的分包,按需加载。分包的好处主要有两点:一是可以减少小程序首次启动的下载时间,二是可以更好地解耦协作,方便多人开发。
在小程序中,分包前后的项目构成有所不同。分包前,小程序中所有的页面和资源都被打包到了一起,导致整个项目体积过大,影响小程序的首次启动的时间。分包后,小程序有一个主包外加多个分包组成。主包一般只包含项目的启动页或tabBar页面,以及所有分包都需要用到的公共资源;而分包只包含和当前分包有关的页面和私有资源。
小程序分包的加载规则如下:
在小程序启动时,默认会下载主包并启动主包内页面。
当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。
非tabBar页面可以按照功能的不同,划分为不同的分包之后,进行按需下载。
需要注意的是,整个小程序的主包加分包不能超过20M,单个包不能超过2M,主包也是。在使用分包时,需要在app.json的subpackages节点中声明分包的结构。
另外,小程序的打包原则如下:
小程序会按subpackages的配置进行分包,subpackages之外的目录将被打包到主包中。
主包也可以有自己的pages(即最外层的pages字段)。
tabBar页面必须在主包内。
分包之间不能互相嵌套。
最后,需要注意的是,在小程序中,主包无法引用分包内的私有资源,分包之间也不能相互引用私有资源,但是分包可以引用主包内的公共资源。