为了进一步帮助你提升小程序性能,缩短小程序的页面渲染时间,智能小程序推出了新的生命周期Page.onInit,可以在3.160.12及以上的基础库版本中使用。
更多内容视图开发人员社区:
https://smartprogram.baidu.com/forum/topic/show/115695?fr=今日头条
更多招聘信息
:https://talent.baidu.com/external/baidu/index.html#
/社交/2/智能小程序研发
以百度知道小程序为例。使用Page.onInit优化后,屏幕时间增加了210ms左右。
以下是百度知道、百度百科、宝宝知道使用Page.onInit后的好处:
Page.onInit是百度智能小程序提供的页面级生命周期。生命周期功能的执行比页面中的其他生命周期要早得多。
如果在Page.onInit中进行网络请求,会提前获取页面数据。所以页面的渲染时间会缩短,小程序的用户体验会大大提升。
如果对小程序的启动原理感兴趣,可以参考下图所示的小程序启动流程。Page.onInit在收集initData并发送setInitData后立即执行。可以看出onInit中页面主数据的请求会比页面的其他生命周期更快。
如果想了解Page.onInit的详细原理,可以参考下图。applet在设置setInitData后立即执行Page.onInit。
如果将主数据请求从Page.onLoad转移到Page.onInit,小程序的页面加载性能会有很大的提升。
开发人员可以在onInit中向服务器请求数据,并执行setData。该图显示了setData的两个机会,应该注意的是:
如果发送setData的时机早于渲染线程的FCP,则可以在onLoad中获取该setData的视图信息。如果setData晚于FCP,那么onLoad将不会获得该setData的视图信息。Page.onInit的接口文档和说明见官方文档onInit(对象查询)
下面是一些关于onInit使用的限制和建议:
不能执行任何依赖于视图层的操作,包括但不限于:selectComponent、selectAllComponents、swan.createSelectorQuery、swan.createMapContext、swan.createCameraContext、swan.createCanvasContext等。由于不是所有版本的basic库都支持这种生命周期,开发人员可以参考官方文档中的代码片段来添加兼容性逻辑。如果你的小程序在逻辑线程初始化阶段瓶颈比较大,使用Page.onInit可能效果不明显。建议从减少动态库和插件的使用,减少App.onLaunch的耗时等角度进行优化,有两种方式供你验证Page.onInit的相关功能:
真机验证:使用百度11.20版本及以上。开发者工具:需要安装3.8.0或以上稳定版或rc版开发者工具,并将基础库版本设置为3.160.12或以上,下载地址。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/180473.html