Qwik 1.20 · 可恢复性 demo

这个页面一开始只带了这么点 JS

首屏不需要 hydration;重型数据要等你点,点之前网络里根本没有它

首屏账单

首屏 JS(挂载瞬间)
当前已下载(含预取)
HTML 文档

    「当前已下载」会随时间变大 —— Qwik 会在**空闲时后台预取**其它 chunk,这样你点任何东西都不用等。 那部分不算首屏成本,因为首屏该跑的东西早就跑完了(对照:同体量 Next / Nuxt 首屏 JS 常见 200~500KB)。

    交互 1 · 计数器

    随首屏可用

    没有 hydration —— 页面从一开始就是「活的」,不需要先把 JS 跑一遍再重新绑定事件。

    0点了 0

    交互 2 · 按需拉 400KB 数据

    约 413 KB

    6 万个数据点存在 /heavy-data.json。它不是 JS,Qwik 的后台预取拿不到它 —— 所以下面这个数字是真实的新增下载量。点之前,DevTools 的 Network 里找不到这个文件。

    它跟 React / Vue 差在哪

    传统 hydrationQwik resumability
    首屏做什么下载全站 JS → 从头执行一遍 → 重新挂事件只下载用到的碎片,事件状态直接从 HTML 里「恢复」
    组件代码通常首屏就一起下了按需拆分,空闲时后台预取(点了不卡)
    数据也能懒加载,但得自己写一样得自己写;差别在框架不会把所有代码都塞首屏
    代价首屏大、主线程忙心智模型要重学($ / 序列化边界);生态小

    自己验证:DevTools → Network → 勾 Disable cache → 刷新,先看首屏拉了什么;过几秒再看,会多出 Qwik 预取的 chunk;最后点那个按钮,看 413KB 的 json 才出现。

    用 Qwik 1.20 构建 · 静态预渲染 · 玩完就删