很多人第一次看 Qwik,会以为它只是“代码分割做得更细”。
不够准确。
Qwik 不只是 lazy loading,更关键是 lazy execution。
区别在这:
- 普通懒加载:代码先分块,但页面一活过来,很多块还是要立刻执行
- Qwik 的懒执行:代码不但分块,而且很多逻辑直到用户真的触发时才执行
看一个最小例子:
import { component$, useSignal } from '@builder.io/qwik';
export default component$(() => {
const count = useSignal(0);
return (
<button onClick$={() => count.value++}>
当前人数:{count.value}
</button>
);
});这里有两个非常 Qwik 的符号:
component$onClick$
$ 可以理解成:
“这里是优化器的切点,这段能力可以被拆出去,按需恢复。”
所以这段按钮逻辑不是“整页先启动,再等你点击”,而是更像:
用户还没点按钮时
└── 这段点击逻辑不急着执行
用户点击按钮
└── Qwikloader 找到这段逻辑对应的代码块
└── 下载它
└── 恢复执行
└── 只更新相关 UI这就是 Qwik 的瞬启感来源:
先展示,后恢复;先有页面,后按需唤醒行为。