小程序中,分包(分包加载)是一种优化小程序加载和性能的方法,尤其在代码体积较大时。这篇笔记主要记录如何配置分包
要点 | 详细说明 |
---|---|
什么是分包 | 将小程序代码和资源划分为多个独立的包,主包在启动时加载,分包按需加载。 |
为什么要分包 | - 减少主包大小,避免超过限制 - 提升启动速度,减少用户等待 - 按需加载节省流量 |
是否可以分多个包 | 是,可以分多个包(如微信小程序:最多 200 个分包,整个小程序所有分包大小不超过 30M(服务商代开发的小程序不超过 20M),单个包不超过 2 MB)。 |
配置方法 | 在 pages.json 中通过 subPackages 配置分包,主包和分包需分别定义。 |
注意事项 | - 主包不能依赖分包,避免循环依赖 - 提取公共模块,避免重复加载 - 动态分包加载需手动调用 wx.loadSubpackage |
应用场景 | - 按模块分包:如订单管理、用户中心 - 按页面分包:如活动页面、特定功能 - 按平台优化:根据不同平台的限制调整分包策略 |
动态分包 | 使用平台 API(如微信的 wx.loadSubpackage )手动加载需要的分包,适合大型模块或延迟加载场景。 |
上面表格就是分包的一些基础知识,我们现在上手操作下如何新建分包
新建分包
看uni-app分包文档, 在pages.json里添加subPackages,subPackages里pages为空,等下我们新建页面的时候,会自动在subPackages里pages注册页面
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页"
}
}
],
"subPackages": [
{
"root": "pages-me-reserve",
"pages": []
},
]
}
接着在HBuilderX项目根目录新建一个分包文件夹,和subPackages
里root对应的名称相同
在分包文件夹pages-courses右键新建页面,选择分包那里确认下是不是我们新建的分包名称
新建完后,subPackages里pages自动注册了我们新建的页面
这里,我新建了2个分包
"subPackages": [
{
"root": "pages-courses",
"pages": [
{
"path": "newCourse/newCourse",
"style": {
"navigationBarTitleText": "新建课程"
}
},
{
"path": "courseList/courseList",
"style": {
"navigationBarTitleText": "课程列表"
}
}
]
},
{
"root": "pages-me-reserve",
"pages": [
{
"path": "reserveList/reserveList",
"style": {
"navigationBarTitleText": "我的预约"
}
}
]
}
],
跳转分包页面
我们在跳转分包页面的时候需要加上root路径,比如上面的分包跳转新建课程,加上了root路径/pages-courses
uni.navigateTo({
url: `/pages-courses/newCourse/newCourse`,
});