Qwik 可恢复性说明
**Qwik 中的可恢复性是一个革命性的概念,它最大限度地减少了需要在客户端下载和执行的 JavaScript 数量。**
它允许 Qwik 应用程序从服务器上中断的地方“恢复”,而不需要在客户端上重播或重新补充整个应用程序状态。
以下是 Qwik 中可恢复性的解释:
**1. 具有应用程序状态的预渲染 HTML:**
Qwik 应用程序在服务器上预渲染,生成的 HTML 包含作为 DOM 的一部分嵌入的应用程序所需的所有必要状态和上下文。
**2. 无需客户端补液:**
i. 与传统框架(React、Angular 等)不同,Qwik 不需要“rehydration”,即重新执行组件以重建状态并附加事件监听器的过程。
ii. 相反,Qwik 直接使用服务器提供的 HTML,并在用户与应用程序交互时仅激活应用程序的必要部分。
**3. 细粒度代码加载(惰性执行):**
Qwik 将应用程序分解为微模块。这些是按需加载的小 JavaScript 块。例如:
i. 仅当单击按钮时才会加载按钮单击处理程序。
ii. 仅当用户与表单交互时才会下载表单验证脚本。
**4. 恢复状态:**
i. 当 Qwik 应用在客户端上初始化时,它已经“知道”应用程序状态,因为该状态已在服务器上序列化并包含在 HTML 中。
ii. Qwik 从中断的地方恢复执行,而不是重建整个组件树。
**5.基于事件的激活:**
Qwik 仅在特定事件(如按钮点击或输入更改)需要时才激活应用程序部件。这减少了浏览器最初执行的 JavaScript 量。
**为什么可恢复性如此强大 -**
性能改进:
Qwik 提供了快速的“交互时间”(TTI),因为预先下载了最少的 JavaScript。
由于不需要水化步骤,页面加载后立即可交互。
优化资源使用:
只需下载用户交互功能的代码。这使得 Qwik 成为大型应用程序或通过较慢的网络/设备访问的应用程序的理想选择。
SEO和用户体验:
服务器端渲染 (SSR) 可确保搜索引擎和用户立即获得完全渲染的 HTML 页面。
JavaScript 是延迟加载的,因此用户体验流畅,不会因大量脚本执行而导致延迟。
**示例场景**
传统框架:
在 React 应用中,当页面加载时,整个组件树都会重新加载。即使用户只与一个按钮交互,整个应用也需要重新运行其 JavaScript。
Qwik 的方法:
在 Qwik 应用上,页面以纯 HTML 形式加载。当用户点击按钮时,Qwik 只会获取按钮的处理程序代码并执行它,而不会影响应用的其余部分。
**关键要点**
Qwik 中的可恢复性是构建快速、高效且可扩展的 Web 应用程序的一大变革。通过允许应用程序从服务器停止的地方继续执行,而无需进行完整的补水过程,它大大减少了 JavaScript 占用空间并提高了用户的性能。