有时候我们的小程序太大,首次打开小程序的时候回比较慢,这个时候我们可以试试分包操作。分包可以让用户在操作小程序的时候按需下载资源(用户在进入某些页面的时候才去下载相应的资源,可以加快小程序的速度,优化用户体验)。
小程序代码有个2M限制,是不是有的时候放图片都得忍着点,不敢把太大的放在小程序里面,只能放远程;但是随着项目不断迭代更新,代码图片越来越多,开发的时候更加小心翼翼。是不是很不舒服,还能不能让我舒服的敲代码了。
那就说一下分包的限制吧;分包以后单独包最大不能超过2M;整个小程序可以达到8M;比那2M限制翻了4倍;那就让我们愉快地敲代码吧。
首先在app.json里面全局配置里面配置分包:(subpackages 属性和pages同级)
通过我的截图可以看出来,我在根目录创建了一个名为shopping的分包(shopping这个文件夹里面的文件都会打包到分包里面去);
然后我再shopping这个包里面创建了一个页面(一般新建的页面都要在pages里面声明,现在包里面的页面不需要在pages里面声明,只需要在我们声明的分包里面的pages里面声明,是相对root路径的路径)。
去网上随便找了几张图片,力求把整个小程序的大小超过2M。
在主包的首页设置个点击跳转到分包,把图片都引入,然后点击预览
从首页点击跳转到分包页效果:
简单的分包就写好啦
分包--预加载
分包预加载,通过app.json里面的 preloadRule 属性配置也加载。
这样配置的效果就是当我们进入到shop_load(自己随便新建一个页面)的时候会静默的加载我们的shopping包。当我们在进入包页面的时候,就流畅进入了。
独立分包
独立分包就是这个包是独立的,不依赖于主包就能用,当设置为独立分包时,我们从独立分包进入不会加载主包,只有进入主包页面或者非独立分包页面是才加载主包。
使用方法就是前面截图写的,只要在配置包的时候,把independent 设置为 true就成为独立分包。
独立分包注意事项:
从独立分包进入的时候,由于没有加载主包,因此通过getApp()方法拿到的是undefined;只有在加载主包回来这个页面以后才能通过getApp拿到全局参数。
独立分包不能共享其他包样式,包括app.wxss样式。
独立分包不支持使用插件
在低于6.7.2的微信版本的小程序独立分包当成普通分包对待,不具备独立分包的能力。
为了兼容独立分包进入无法全局管理变量的能力,官方在基础版本库2.4.4以后做了兼容,使用 getApp({allowDefault: true}) 可以预先写入变量,当主包加载的时候回同步到app里面。
const app = getApp({allowDefault: true});
app.aa = 1; // 等主包加载的时候回同步进去
借鉴自:https://blog.csdn.net/wangzai888/article/details/88852116