React 可用于服务器端渲染。这意味着什么?

IT技术 reactjs redux isomorphic-javascript
2021-04-06 07:08:38

我是 React 和 Redux 的新手。虽然我知道 React 只是一个视图层。但是我看到了一个术语“React 可用于服务器端渲染”。这是什么意思以及它如何在 nodejs 的幕后工作。任何人都可以帮助我弄清楚“什么是react中的服务器端渲染”这一事实。

1个回答

react-dom软件包包括一个servermodule。这个module允许你将你的 React 应用程序渲染为一个简单的 HTML 字符串reactDOMServer.renderTostring()基本上是一组给定的视图的快照props

https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring

此外,此函数根据它生成的字符串计算唯一的哈希值并将其附加到 html。客户端, react 可以“拾取”服务器生成的 HTML 并将其用作“第一次渲染”。

虽然客户端首先渲染和服务器渲染需要产生完全相同的输出,以便在客户端接收它。React 可以通过生成的 hash 来检查:客户端 react 也会生成一个 html 字符串(不修改实际的 DOM,我认为这只是在虚拟 DOM 上完成的)。现在,它还可以从其虚拟 DOM 计算哈希值,并将其与服务器呈现的值进行比较。如果它们匹配,则不需要进行渲染。如果他们不这样做,客户端的react将丢弃服务器生成的 DOM 并将其替换为它的版本(并打印出错误/警告)。

结合 redux,这意味着除了呈现 HTML 之外,您还需要将商店的状态 ( store.getState()) 传递给客户端。然后,客户端可以在创建其 Redux 存储实例时使用此序列化状态作为初始状态。这将导致两个渲染(客户端 + 服务器)匹配。

如果你不需要客户端做任何事情,只想在服务器端创建静态标记,react-dom提供一个renderToStaticMarkup()功能:

https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostaticmarkup