微信小程序基础能力—按需注入和用时注入

微信小程序基础能力—按需注入和用时注入

# 按需注入和用时注入

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

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

# 按需注入

基础库 2.11.1 及以上版本支持,2.11.1 以下兼容但无优化效果。 工具调试请使用 1.05.2111300 及以上版本,基础库选 2.20.1 及以上版本。

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

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

{
  "lazyCodeLoading": "requiredComponents"
}

当配置了这一项时,小程序仅注入当前页面需要的自定义组件和页面代码,在页面中必然不会用到的自定义组件不会被加载和初始化。

注意:添加这项配置后,未使用到的代码文件将不被执行。

# 用时注入

基础库 2.11.2 及以上版本支持,2.11.2 以下和未配置的效果相同。 工具调试请使用 1.05.2111300 及以上版本,基础库选 2.20.1 及以上版本。

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

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

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