携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情
微信开发者工具中提供了用来检测小程序的性能和体验问题的工具,在开发者工具中的调试器中,点开Audits面板即可看到,我们在Audits面板中点击运行,并操作小程序,就可以看到此工具生成的体验报告,如下:
我们可以根据上述体验报告中定位出的问题以及给出的建议,针对性地进行更改来提高小程序的性能和体验。除了Audits面板中提供的一些性能优化建议,我们在开发微信小程序的过程当中也有些需要优化的地方。
页面层级优化
在微信小程序当中,页面栈最多是10层,如果页面使用wx.navigateTo连续跳转10次,那么后面再跳转将没有反应,所以应该在跳转的过程中,关闭不需要的页面层级。例如:
- 使用wx.redirectTo方法,关闭当前页面进行跳转
- 使用wx.reLaunch方法,关闭当前打开的所有页面进行跳转
接口调用频率优化
微信小程序中的接口有一部分是限频接口(也就是不允许频繁调用的接口),因为这些接口一般会调用微信后台资源,为了防止资源被滥用,开发的过程当中,需要对此类接口的调用频率进行适度的限制。如果调用次数过多,超出了接口调用次数的限制范围,那么将会收到警告,也可能导致调用失败。这类接口如下:
- wx.login
- wx.checkSession
- wx.getSetting
- wx.getUserInfo
- wx.getUserProfile
对于这些接口,我们可以将接口返回的数据进行缓存,不要每次都重新调用。
小程序包大小优化——分包加载
如果微信小程序的代码包大小比较大,打开小程序的时间就会比较久,这时候就可以采用分包加载将代码分为主包和分包,主包就是打开小程序的时候马上会加载的页面,分包就可以配置一些后续跳转的页面。在app.json文件里可以直接配置subPackages来实现分包加载,如下:
{
"pages":[
"pages/index"
],
"subPackages": [
{
"root": "pages/goods",
"pages": [
"list",
"detail"
]
}
]
}
上述配置中,打开小程序的时候会先下载pages中的index页面,然后如果后续需要跳转到商品相关的页面,在跳转的时候就会再下载subPackages中商品页面。
setData调用优化
setData更新方法会触发dom更新,所以setData的频繁调用,也会引发性能问题。后续会对setData方法的调用优化进行详细的总结。