2

使用 react 服务器端渲染,渲染的 HTML 是否仅在状态完全加载后才发送给客户端?

例如,如果用户请求具有多个异步 API 调用的页面,那么客户端是否必须等待这些 API 调用完成才能收到任何打包的 HTML?

如果这是正确的,如果用户请求的页面运行缓慢的 API 调用,用户是否会一直看着一个空的浏览器窗口?即,服务器在向客户端发送响应之前正在等待 API 调用完成。

我已经阅读了http://redux.js.org/docs/recipes/ServerRendering.html上的文档,但我不确定我是否正确解释了它。有人可以为我澄清一下吗?

4

1 回答 1

2

一句话:没有。ReactDOMServer.renderToString不支持开箱即用的异步调用。

您可以做的是预取数据并将其放入 html 中,然后将其发送回客户端,例如:

<script>
   window._preFetchedData = {"somedata": {"post": {//...
</script>

所以当页面被发送到浏览器时,前端应该读取并加载preFetchedData.

在我看来,React virtual-dom 只提供了服务器端渲染问题的一半(1/3?)解决方案。要完成完美的服务端渲染,数据流管理需要付出很大的努力,很多时候这并不值得。

于 2016-12-09T02:55:33.227 回答