0Pricing
React Academy · 课时

完整水合的问题

测量为整个 React SPA 执行水合的成本,并理解静态页面为何不需要水合

完整水合的问题 是 CoddyKit 上的免费 React Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 React Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 React Academy 课程共包含 4 节课。

什么是水合

水合是指 React 接收服务器渲染的 HTML,并为其附加 JavaScript 事件监听器的过程。服务器先发送初始 HTML(速度很快),然后浏览器下载 JavaScript 代码包,React 再对静态 HTML 进行“水合”,使其具备交互能力。在水合完成之前,页面看起来像是可以交互的,实际上却无法交互。

传统 SPA 的水合成本

传统单页应用会将整个 JavaScript 代码包发送到浏览器。React 必须下载、解析并执行它,然后为组件树中的每个组件附加事件监听器。对于大型应用,这个过程在中端移动设备上可能需要数秒。

可交互时间(TTI)

可交互时间表示用户需要等待多久才能与页面交互。水合会直接阻塞 TTI:页面可能看起来已经准备就绪(服务器渲染的 HTML 已经可见),但按钮和表单要等到 React 完成事件监听器的附加后才会响应。较高的 TTI 数值意味着糟糕的用户体验。

静态内容悖论

以一个营销页面为例:页面中 80% 的内容是不会变化的静态文本、图片和标题,只有 20% 涉及新闻订阅表单或视频播放器之类的交互式组件。传统 SPA 的水合仍然会处理整个页面,也就不必要地处理了静态组件。

测量水合成本

Chrome DevTools 的性能分析可以揭示水合成本。在主线程瀑布图中,您可以将“React 水合”任务识别为首次绘制后的一段较长 JavaScript 执行区块。这段区块越长,主线程被占用的时间就越多,页面的响应能力也越差。

组件树大小很重要

React 组件树越大,水合所需的工作就越多。React 必须访问每个组件,将服务器渲染的 HTML 与组件实际会渲染的内容进行比较,并附加事件监听器。即使设备运行速度很快,包含数百个组件的复杂页面也可能产生可测量的水合开销。

React 18 并发水合

React 18 引入了并发水合,使 React 可以将水合拆分为更小的区块,并在区块之间将执行权交还给浏览器。这样可以避免大型组件树水合期间浏览器看起来完全卡住。不过,并发水合只能降低影响,并不能消除这一根本成本。

React 18 中的选择性水合

选择性水合(通过 Suspense)允许 React 按优先级顺序为组件进行水合:用户交互会触发相关组件立即进行水合。这可以改善响应能力,但仍然运行在同一个 React 树中:树中的所有组件最终都会完成水合。

根本洞察

岛屿架构背后的根本洞察是:典型页面中的大部分内容根本不需要 JavaScript。导航栏、主视觉区域、页脚链接、博客文章文本和产品描述都只是用于呈现内容。强制让这些内容参与水合,从定义上来说就是浪费。

现实世界的影响

网页性能团队的研究表明,在移动设备上,JavaScript 的解析和执行时间是主要成本。一个 300kb 的 JavaScript 代码包在普通 Android 手机上需要 2 至 3 秒才能完成解析。与任何 React 内部优化相比,减少发送到浏览器的 JavaScript 能带来大得多的性能收益。

水合税

React 应用每增加一千字节的 JavaScript,就会增加水合工作量。即使某个组件只是装饰性的,只要它位于 React 树中,就会参与水合。这种“水合税”会随着应用规模扩大而增加,使应用越大,越难维持良好的 TTI 数值。

TTI 与水合

React 水合与可交互时间(TTI)之间是什么关系?

课程回顾

传统 React 水合会处理整个组件树,包括不需要任何 JavaScript 的静态内容。这会阻塞可交互时间,并且随着应用规模扩大而表现不佳。React 18 的并发水合和选择性水合改进可以降低影响,但无法消除这一根本成本。根本洞察是:大多数页面内容根本不需要 JavaScript,因此完整水合是一种浪费。

常见问题解答

「完整水合的问题」课时是免费的吗?

是的 — 「完整水合的问题」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 React Academy 课程的其余内容,请升级到 CoddyKit PRO。 React Academy 课程共包含 4 节课。

「完整水合的问题」这节课中我会学到什么?

测量为整个 React SPA 执行水合的成本,并理解静态页面为何不需要水合 你通过在浏览器中直接运行的动手代码来练习 React Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 React Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 React Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「完整水合的问题」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 React Academy 课中编写并运行代码吗?

能。每节 React Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 完整水合的问题
  2. 群岛架构:选择性水合
  3. Astro 与 React 群岛配置
  4. 性能测量:Lighthouse 与核心网页指标
← 返回 React Academy