智能小程序新增Page.onInit功能,有效提高性能

为进一步帮助您提高小程序性能,缩短小程序页面渲染时间,智能小程序上线了一个新的生命周期 Page.onInit,您可在3.160.12 及以上的基础库版本中使用。html

更多内容查看开发者社区/更多招聘信息小程序

有效提高性能

百度知道小程序为例,使用 Page.onInit 进行优化后,上屏时长约提高了 210ms服务器

如下是百度知道、百度百科和宝宝知道使用Page.onInit后的收益:网络

小程序 收益(单位 ms)
百度知道 210
百度百科 100
宝宝知道 150

什么是Page.onInit

Page.onInit 是百度智能小程序提供一种页面级别的生命周期。该生命周期函数执行时机远早于页面中的其余生命周期。app

若是您在Page.onInit中去发起网络请求,会提早获取页面数据。所以会缩短页面的渲染时间,极大提高小程序的用户体验。函数

若是您对小程序启动原理感兴趣,可参考下图小程序的启动流程,Page.onInit是在收集initData发送setInitData后当即执行。因而可知,页面主数据的请求放在 onInit 中,将快于页面的其余生命周期。 若是您想了解Page.onInit的细节原理,可参考下图,小程序是在 setInitData 以后当即执行Page.onInit工具

若是把主数据请求从 Page.onLoad 转移到 Page.onInit 中,将极大提高小程序的页面加载性能。性能

开发者能够在onInit中向服务器请求数据,并执行setData。图中展现了setData的两种时机,同时应注意:优化

  1. 若是setData发出的时机早于渲染线程的 FCP,那么在onLoad中将能获取到本次setData的视图信息。
  2. 若是setData晚于 FCP,那么onLoad中将获取不到本次setData的视图信息。

使用建议

关于Page.onInit的接口文档和使用说明,请阅读官方文档onInit(Object query)插件

此处列举一些onInit的使用限制和建议:

  1. 不能进行任何依赖视图层的操做,包括且不限于:selectComponentselectAllComponentsswan.createSelectorQueryswan.createMapContextswan.createCameraContextswan.createCanvasContext等;
  2. 因为并不是全部版本的基础库都支持今生命周期,开发者能够参考官方文档中的代码片断,增长兼容逻辑;
  3. 若是您的小程序在逻辑线程初始化阶段存在较大瓶颈,那么使用Page.onInit可能不会有明显效果。建议从减小动态库和插件的使用、减小App.onLaunch耗时等角度进行优化。

验证方式

您有两种方式验证Page.onInit的相关功能:

  1. 真机验证:使用 11.20 及以上版本的百度 APP 。
  2. 开发者工具:需安装 3.8.0 及以上稳定版或rc版的开发者工具,并将基础库版本设置为3.160.12以上,下载地址.

最后,感谢各位开发者积极投身百度小程序的开发当中,在开发过程当中有任何问题均可以在社区与官方或其余开发者进行互动,也可将您的意见发送邮件至smartprogramtech@baidu.com,期待您的参与!

相关文章
相关标签/搜索