SSR 服务端渲染记录

Thu Aug 22 2024 · 25min

解析

suspense 结束前,主文档先渲染占位,并且留一个 template 元素站位用来后续上屏真实渲染结果

<div id="root">
  <!--$?-->
  <template id="B:0"></template>
  loading..
  <!--/$-->
</div>

下面是对应的待替换的模版

<div hidden id="S:0">
  <template id="P:1"></template> // 服务端渲染的结果
  <template id="P:2"></template> // 服务端对应的数据
</div>

等到流式结束后,上边的元素会变成

<div hidden id="S:0">
  <div>418</div>
  // 服务端渲染的结果
  <script>
    服务端接口返回数据;
  </script>
  // 服务端对应的数据
</div>

然后再用 S:0替换 B:0完成 hydrate

  • $RS (render snapshot), Suspense 结束后, 上屏服务端渲染结果,包括服务端渲染的DOM 以及 对应的数据源
  • $RC (render commit) ,hydrate,提交到主文档进行真实渲染
  • $RX suspense 时发生异常,服务端会渲染对应的报错信息,降级到CSR渲染
Leave a comment
点击切换主题
... 人来过