程序启动利用「按需注入」和「用时注入」优化代码注入的耗时和内存占用

网友投稿 458 2024-07-02

按需注入和用时注入

小程序启动的过程中,除了代码包-以外,代码注入也是一个主要的耗时环节。注入代码量的大小与内存占用与注入耗时正相关。

小程序启动利用「按需注入」和「用时注入」优化代码注入的耗时和内存占用

利用「按需注入」和「用时注入」的特性,可以优化代码注入环节的耗时和内存占用。

#1. 按需注入

基础库 3.0.38 及以上版本支持,3.0.38 以下兼容但无优化效果。 工具调试请使用 1.8.44 及以上版本,SDK 请使用 2.41.0 以上。

通常情况下,在小程序启动时,启动页面依赖的所有代码包(主包、分包、插件包、扩展库等)的所有 JS 代码会全部合并注入,包括其他未访问的页面以及未用到自定义组件,同时所有页面和自定义组件的 JS 代码会被立刻执行。这造成很多没有使用的代码在小程序运行环境中注入执行,影响注入耗时和内存占用。

自基础库版本 3.0.38 起,小程序支持通过配置,有选择地注入必要的代码,以降低小程序的启动时间和运行时内存。

{
  "lazyCodeLoading": "requiredComponents"}
        已复制代码

#1.1 注意事项

  • 启用按需注入后,小程序仅注入当前访问页面所需的自定义组件和页面代码。未访问的页面、当前页面未声明的自定义组件不会被加载和初始化,对应代码文件将不被执行。请开发者修改配置后务必确认小程序的表现正常

  • 启用按需注入后,页面 JSON 配置中定义的所有组件和 app.json 中 usingComponents 配置的全局自定义组件,都会被视为页面的依赖并进行注入和加载。建议开发者及时移除 JSON 中未使用自定义组件的声明,并尽量避免在全局声明使用率低的自定义组件,否则可能会影响按需注入的效果。

  • 插件包和扩展库目前暂不支持按需注入。

#2. 用时注入

基础库 3.0.38 及以上版本支持,3.0.38 以下兼容但无优化效果。 工具调试请使用 1.8.44 及以上版本,SDK 请使用 2.41.0 以上。

在开启「按需注入」特性的前提下,「用时注入」可以指定一部分自定义组件不在小程序启动时注入,而是在真正渲染的时候才进行注入。

在已经指定 lazyCodeLoading 为 requiredComponents 的情况下,为自定义组件配置 占位组件,组件就会自动被视为用时注入组件:

  1. 每个页面内,第一次渲染该组件前,该组件都不会被注入;

  2. 每个页面内,第一次渲染该组件时,该组件会被渲染为其对应的占位组件,渲染流程结束后开始注入;

  3. 注入结束后,占位组件被替换回对应组件。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:手机中清除小程序缓存的有效方法与步骤
下一篇:小程序SDK多线程 Worker使用流程
相关文章

 发表评论

评论列表

2024-09-20 01:50:53

这篇文章很有启发性,我之前一直没有意识到代码注入对小程序启动的耗时和内存占用有这么大的影响。感谢小编的详细解释和介绍。

2024-09-21 09:56:19

小程序的代码注入确实是一个值得优化的环节,按需注入和用时注入的特性可有效减少不必要的代码注入,提高小程序的启动速度和内存利用率。真是个好方法啊!

2024-09-24 20:42:47

我有个疑问,按需注入对于未访问的页面和未用到的自定义组件是不会被加载和初始化的,那么在使用过程中,如果用户通过某种操作访问到了这些页面或组件,会不会导致出现一些问题呢?