HarmonyOS 延迟加载(lazy import)
功能特性
延迟加载特性可使待加载文件在冷启动阶段不被加载,直至应用程序实际运行过程中需要用到这些组件时,才按需同步加载相关文件,从而缩短应用冷启动耗时。
使用方式
文件的调用点,可以直接增加lazy标识。
但需要注意的是,后续执行的加载是同步加载,有可能会阻塞任务执行(如点击任务,触发了延迟加载,那么运行时会去执行冷启动未加载的文件,从而增加耗时),因此是否使用lazy需要开发者自行评估。
使用lazy-import延迟加载。
import lazy { a } from "./mod1"; // "mod1" 未执行
import { c } from "./mod2"; // "mod2" 执行
错误示例
以下写法将引起编译报错。
export lazy var v; // 编译器提示报错:应用编译报错
export lazy default function f(){}; // 编译器提示报错:应用编译报错
export lazy default function(){}; // 编译器提示报错:应用编译报错
export lazy default 42; // 编译器提示报错:应用编译报错
export lazy { x }; // 编译器提示报错:应用编译报错
export lazy { x as v }; // 编译器提示报错:应用编译报错
export lazy { x } from "mod"; // 编译器提示报错:应用编译报错
export lazy { x as v } from "mod"; // 编译器提示报错:应用编译报错
export lazy * from "mod"; // 编译器提示报错:应用编译报错
import lazy v from "mod"; // 编译器提示报错:应用编译报错
import lazy * as ns from "mod"; // 编译器提示报错:应用编译报错
与type关键词同时使用将会导致报错。
import lazy type { obj } from "./mod"; // 不支持,编译器、应用编译报错
import type lazy { obj } from "./mod"; // 不支持,编译器、应用编译报错