小程序打包上线流程
-
在uni-app端完成微信小程序的打包;
-
在微信开发者工具中将代码上传到微信公众平台,形成体验版;
-
测试人员根据扫描体验版二维码进行最后的测试工作;
-
测试通过后,点击提交审核,进入审核流程,通常24小时就能出结果;
-
审核通过后,用户即可通过维系小程序搜索到我们的小程序;同时我们还可以在微信公众平台生成小程序的葵花码,交给推广人员进行推广;
小程序的性能优化
开启代码压缩
- 上传代码时勾选开发者工具中“压缩代码”选项;
处理静态资源
- 预先对图片、视频等静态资源进行物理压缩,推荐大家一个在线压缩图片的网站 TinyPNG;
- 能使用CDN服务的图片视频等就尽量不要打到代码包中;
对页面进行分包
- 主包只打首页等高频页面;
- 用户可能不会访问的页面分模块打到子包中,如果用户果然不访问这些页面,就不会对这些分包进行下载了;
对分包进行预加载
微信小程序的分包预加载是一种优化手段,可以提高小程序的加载速度和性能。以下是进行分包预加载的步骤:
- 首先,在微信小程序的项目配置文件
app.json中,设置preloadRule字段来定义需要预加载的分包。可以使用正则表达式来匹配分包的路径,例如:
{
"preloadRule": {
"pages/subpackageA/": true,
"pages/subpackageB/": true
}
}
上述代码将会预加载 pages/subpackageA/ 和 pages/subpackageB/ 这两个分包。
- 接下来,在小程序的入口页面中,通过
wx.loadSubpackage()方法进行分包的预加载。例如:
wx.loadSubpackage({
name: 'subpackageA',
success: function(res) {
// 分包预加载成功后的回调
},
fail: function(res) {
// 分包预加载失败后的回调
}
})
上述代码将会预加载名为 subpackageA 的分包。在 success 回调中可以进行相关逻辑处理,例如跳转到分包页面。
通过以上步骤,你可以实现微信小程序的分包预加载,提高用户体验和性能。注意,为了避免过多的预加载影响页面加载速度,建议仅对关键的分包进行预加载。
合理使用缓存
- 尽量减少HTTP请求的次数:拿到数据setStorage缓存起来,下次需要使用相同数据时先getStorage,没有再发起网络请求,
- 如果使用的是uniapp/Vue2框架,则可以使用Vuex作为存储的store;
- 组件内缓存状态数据,在uniapp/Vue2中合理使用computed;
在uni-app 如何区分机型
// 在代码中使用条件编译指令区分 Android 和 iOS 平台
if(process.env.UNI_PLATFORM === 'h5') {
// 在 H5 平台下执行的代码
console.log('This is H5 platform');
} else if(process.env.UNI_PLATFORM === 'android') {
// 在 Android 平台下执行的代码
console.log('This is Android platform');
} else if(process.env.UNI_PLATFORM === 'ios') {
// 在 iOS 平台下执行的代码
console.log('This is iOS platform');
}
微信小程序的分包配置
分包配置
- 微信小程序【单个代码包的最大体积】不能超过2M,如果因为某些页面引用的静态资源文件较大较多的原因,导致单个代码包体积超过2M时,我们就需要进行页面的分包配置了;
- 可以将小程序的众多页面分配到不同子包中,每个子包大小均不超过2M,所有子包的总体积加起来不能超过20M;
- 下图展示了页面分包配置方式:
- 在进行页面跳转的时候,也需要注意按具体分包调整页面位置
// 分包之前
// uni.navigateTo({
// url: "/pages/cities/cities",
// });
// 分包之后
uni.navigateTo({
url: "/pages/sub/cities/cities",
});
- 在微信小程序中查看分包大小:
微信小程序的路由跳转 分为多少层
- 微信所限制的 10 层页面栈
常见的微信小程序页面跳转方式有如下:
- wx.navigateTo(Object)
- wx.redirectTo(Object)
- wx.switchTab(Object)
- wx.navigateBack(Object)
- wx.reLaunch(Object)
wx.navigateTo(Object)
wx.navigateTo()用于保留当前页面、跳转到应用内的某个页面,使用 wx.navigateBack可以返回到原页面
对于页面不是特别多的小程序,通常推荐使用 wx.navigateTo进行跳转, 以便返回原页面,以提高加载速度。当页面特别多时,则不推荐使用
参数表如下所示:
流程图如下:
wx.redirectTo(Object)
重定向,当页面过多时,被保留页面会挤占微信分配给小程序的内存,或是达到微信所限制的 10 层页面栈的情况下,我们应该考虑选择 wx.redirectTo
wx.redirectTo()用于关闭当前页面,跳转到应用内的某个页面
这样的跳转,可以避免跳转前页面占据运行内存,但返回时页面需要重新加载,增加了返回页面的显示时间
参数表如下所示:
流程图如下所示:
wx.switchTab(Object)
跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面
参数表如下所示:
wx.navigateBack(Object)
wx.navigateBack() 用于关闭当前页面,并返回上一页面或多级页面,开发者可通过 getCurrentPages() 获取当前的页面栈,决定需要返回几层则设置对象的delta属性即可
参数表如下:
wx.reLaunch(Object)
关闭所有页面,打开到应用内的某个页面,返回的时候跳到首页
流程图如下所示:
参数表如下所示:
三、总结
关于上述五种跳转方式,做下总结:
- navigateTo 保留当前页面,跳转到应用内的某个页面,使用 wx.navigateBack 可以返回到原页
- redirectTo 关闭当前页面,跳转到应用内的某个页面
- switchTab 跳转到 tabBar 页面,同时关闭其他非 tabBar 页面
- navigateBack 返回上一页面
- reLanch 关闭所有页面,打开到应用内的某个页面
其中关于它们的页面栈的关系如下:
- navigateTo 新页面入栈
- redirectTo 当前页面出栈,新页面入栈
- navigateBack 页面不断出栈,直到目标返回页,新页面入栈
- switchTab 页面全部出栈,只留下新的 Tab 页面
- reLanch 页面全部出栈,只留下新的页面