先把一句话说透:
Hydration 是重放应用启动过程;resumability 是把应用状态序列化后,从中断点继续运行。
Qwik 官方文档把传统 hydration 拆成三件事:
- 找回事件监听器
- 重建组件树
- 恢复应用状态
传统做法通常要靠浏览器下载组件代码、再执行模板,才能把这三件事重新拼起来。
Qwik 的思路是:
- 在 SSR/SSG 阶段就把这些恢复所需的信息写进 HTML
- 浏览器先不用下载整页组件代码
- 用户触发哪个交互,再只拉哪个符号对应的代码块
可以把它想成:
Qwik 可恢复瞬启城区
服务器:
画好街道、楼房、招牌
记录“哪个门铃连着哪间办公室”
记录“哪栋楼归哪个片区管理”
记录“当前城市运行状态”
浏览器:
不重新建城
不重新演练全城
只在有人按门铃时,叫来那一位工作人员#这为什么重要?
因为前端启动慢,很多时候不是“HTML 出不来”,而是:
- JS 下太多
- JS 执行太多
- 为了让一个按钮可点,整片街区都被迫先启动
Qwik 试图解决的,就是这个“整城先开机”的税。