微信小程序分包是一种优化小程序项目结构和性能的方式。它允许开发者将小程序代码包拆分成多个子包,在用户需要时动态加载这些子包,从而减少小程序的首次加载时间和主包的体积。(总体积不得大于20M,主包(共同文件+静态资源)也不得超过2M)
-
主包(主包):主包包含小程序的基础框架和一些常用页面和组件,是用户打开小程序时首先加载的部分。主包的体积限制为2MB。
-
分包:分包是指除了主包以外的其他代码包,可以包含小程序的页面、组件和资源文件。分包的主要目的是将小程序的代码和资源分割成多个包,以降低主包的体积和加载时间。
-
分包加载策略:微信小程序支持两种分包加载策略:预加载和按需加载。预加载是指在小程序启动时就加载分包,而按需加载是指在需要时动态加载分包。
-
配置分包:要使用分包功能,开发者需要在小程序的配置文件(
app.json
)中进行配置。可以通过subpackages
字段指定分包的路径、名称和预加载策略。 -
动态加载分包:除了在小程序启动时加载分包,开发者还可以使用
wx.loadSubPackage()
方法在小程序运行时动态加载分包。这可以根据用户操作或特定条件来决定加载哪些分包,以实现更灵活的代码加载。
1、manifest开启分包
"mp-weixin" : {
"optimization" : {
"subPackages" : true // 开启分包优化
},
},
2、pages.json中写入分包配置代码(与pages同级)
示例:分包页面路径
"subPackages": [{
"root": "packageA", // 分包1
"name": "packageA",
"pages": [{
"path": "pageA1",
"style": {
"navigationBarTitleText": "分包a页面1",
"enablePullDownRefresh": false
}
},
{
"path": "pageA2",
"style": {
"navigationBarTitleText": "分包a页面2",
"enablePullDownRefresh": false,
}
},
]
},
{
"root": "packageB", // 分包2
"name": "packageB",
"pages": [{
"path": "pageB1",
"style": {
"navigationBarTitleText": "分包b页面1",
"enablePullDownRefresh": false
}
},
{
"path": "pageB2",
"style": {
"navigationBarTitleText": "分包b页面2",
"enablePullDownRefresh": false
}
}
]
}
//再有分包继续添加
],
分包加载:
"preloadRule": { // 分包预载配置
"pages/mall/index": { // 在进入小程序pages/mall页面时,由框架自动预下载分包A
"network": "all",
"packages": ["packageA"]//数组格式 可以加载多个包
},
"pages/Mine/Mine": { // 在进入小程序pages/Mine页面时,由框架自动预下载分包A、分包B
"network": "all",
"packages": ["packageA","packageB"]
}
},
分包文件夹在根目录: