前两天我接手了一个已经上线半年的Uni-app项目,打开开发工具一看,主包大小直接把我吓傻了——居然有6MB!要知道小程序平台对主包限制可是2MB啊,这简直是在钢丝上跳舞。每次发版都心惊胆战的,生怕哪天就过不了审核了。
记得特别清楚,那天下午产品经理兴冲冲地跑来说要加个新功能,我一看需求文档心都凉了半截。现有的包都快爆了,再加新功能岂不是要直接跪?就在我准备跟产品经理大战三百回合的时候,突然想起了分包加载这个救命稻草。
说干就干!我把那些不常用的功能模块——比如个人中心、订单管理、消息通知,全都拆成了子包。结果简直让我不敢相信:
| 分包前 | 分包后 |
| 主包6MB | 主包1.8MB |
| 启动时间5-6秒 | 启动时间1.5秒 |
| 审核经常被拒 | 一次过审 |
最神奇的是,用户根本感觉不到子包是在使用时才下载的,体验丝滑得就像本来就装在本地一样。
// pages.json 配置示例
{
"pages": [...],
"subPackages": [
{
"root": "pages/user",
"pages": [
{"path": "center", "style": {...}},
{"path": "orders", "style": {...}}
]
}
]
}
把用户中心相关的页面都放到pages/user目录下,这样它们就自动成为子包了。只有当用户点击”我的”时,才会下载这个子包。
原本以为分包只是为了解决包大小问题,没想到还带来了额外惊喜。比如不同业务模块的开发团队现在可以各自维护自己的子包,互不干扰。测试的时候也不用每次都下载完整的包,省时省力。
现在产品经理再提新需求,我都能淡定地说:”没问题,给你新建个子包就行。”那种从容的感觉,真的很爽。
不过也要提醒一下,别把分包当成万灵药。如果页面之间有频繁的数据交互,还是放在主包里更合适。分包加载就像给应用做了一次瘦身手术,该减的减,该留的留,才能让应用跑得更快更稳。
参与讨论
主包从6MB降到1.8MB也太爽了,启动快了好多!
我之前搞分包的时候,有个页面间传值没处理好,结果白屏了,得注意一下。
现在小程序审核严,这方法确实能应急,就是配置起来有点麻烦。