优化 uniApp 小程序的性能和体验是提升用户满意度和减少资源浪费的重要任务。 那如何优化小程序加载速度慢,启动时间长的问题呢? 这时候就需要减少包体积,做分包加载,uniApp 支持两种分包方式:页面分包和配置分包
分包加载主要解决以下问题:
- 减少包体积:当小程序的功能较多时,将所有的功能代码和资源放在一个包中会导致包体积过大,从而影响加载速度。
- 提高加载效率:通过按需加载不同模块,只加载当前页面所需要的资源,从而减少初次加载时间和流量消耗。
1、主包 + 子包(配置分包)
{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页"
}
},
{
"path": "pages/my/my",
"style": {
"navigationBarTitleText": "我的"
}
}
],
"subPackages": [
{
// 路径: subPackages/pages/seach/seach
"root": "subPackage", // 子包的根目录
"pages": [
{
"path": "pages/seach/seach",
"style": {
"navigationBarTitleText": "搜索"
}
},
{
"path": "pages/cart/cart",
"style": {
"navigationBarTitleText": "购物转盘"
}
}
]
}
]
}
-
subPackages 配置项中的 root 字段表示子包的根目录,pages 数组中列出该子包中的具体页面。
-
主包中的页面会在 pages 数组中配置,而子包页面会在 subPackages 数组中配置。
当用户访问某些页面时,小程序会自动加载与该页面相关的子包。可以通过 uni.navigateTo
或 uni.redirectTo
来进行页面跳转,子包会在用户跳转时加载。例如,当用户访问子包中的 seach页面时,系统会自动加载 subPackage/pages/seach/seach
所在的子包。
分包加载策略
- 自动加载:当用户访问子包中的某个页面时,相关的资源会自动加载。
- 按需加载:对于一些不常用的页面和功能,可以设置按需加载,使得这些资源不会在应用启动时加载,只有当用户需要时才加载。
// 动态加载某个模块或页面
import('path/to/yourModule').then(module => {
// 使用加载的模块
});
在 uniApp 中,分包加载是一种优化技术,旨在将小程序的代码和资源分为多个包,避免主包过大,提升启动速度,减少资源加载的时间。通过合理的分包配置,uniApp 可以实现按需加载各个功能模块,提升小程序的性能。