ReactDOMServer
对象允许你将组件渲染成静态标记。通常,它被使用在 Node 服务端上:
// ES modules
import ReactDOMServer from 'react-dom/server';
// CommonJS
var ReactDOMServer = require('react-dom/server');
概览
下述方法可以被使用在服务端和浏览器环境。
下述附加方法依赖一个只能在服务端使用的 package(stream
)。它们在浏览器中不起作用。
参考
renderToString()
ReactDOMServer.renderToString(element)
将 React 元素渲染为初始 HTML。React 将返回一个 HTML 字符串。你可以使用此方法在服务端生成 HTML,并在首次请求时将标记下发,以加快页面加载速度,并允许搜索引擎爬取你的页面以达到 SEO 优化的目的。
如果你在已有服务端渲染标记的节点上调用 ReactDOM.hydrate()
方法,React 将会保留该节点且只进行事件处理绑定,从而让你有一个非常高性能的首次加载体验。
renderToStaticMarkup()
ReactDOMServer.renderToStaticMarkup(element)
此方法与 renderToString
相似,但此方法不会在 React 内部创建的额外 DOM 属性,例如 data-reactroot
。如果你希望把 React 当作静态页面生成器来使用,此方法会非常有用,因为去除额外的属性可以节省一些字节。
如果你计划在前端使用 React 以使得标记可交互,请不要使用此方法。你可以在服务端上使用 rend
e
rToString
或在前端上使用 ReactDOM.hydrate()
来代替此方法。
renderToNodeStream()
ReactDOMServer.renderToNodeStream(element)
将一个 React 元素渲染成其初始 HTML。返回一个可输出 HTML 字符串的可读流。通过可读流输出的 HTML 完全等同于 ReactDOMServer.renderToString
返回的 HTML。你可以使用本方法在服务器上生成 HTML,并在初始请求时将标记下发,以加快页面加载速度,并允许搜索引擎抓取你的页面以达到 SEO 优化的目的。
如果你在已有服务端渲染标记的节点上调用 ReactDOM.hydrate()
方法,React 将会保留该节点且只进行事件处理绑定,从而让你有一个非常高性能的首次加载体验。
注意:
这个 API 仅允许在服务端使用。不允许在浏览器使用。
通过本方法返回的流会返回一个由 utf-8 编码的字节流。如果你需要另一种编码的流,请查看像 iconv-lite 这样的项目,它为转换文本提供了转换流。
renderToStaticNodeStream()
ReactDOMServer.renderToStaticNodeStream(element)
此方法与 renderToNodeStream
相似,但此方法不会在 React 内部创建的额外 DOM 属性,例如 data-reactroot
。如果你希望把 React 当作静态页面生成器来使用,此方法会非常有用,因为去除额外的属性可以节省一些字节。
通过可读流输出的 HTML,完全等同于 ReactDOMServer.renderToStaticMarkup
返回的 HTML。
如果你计划在前端使用 React 以使得标记可交互,请不要使用此方法。你可以在服务端上使用 renderToNodeStream
或在前端上使用 ReactDOM.hydrate()
来代替此方法。
注意:
此 API 仅限于服务端使用,在浏览器中是不可用的。
通过本方法返回的流会返回一个由 utf-8 编码的字节流。如果你需要另一种编码的流,请查看像 iconv-lite 这样的项目,它为转换文本提供了转换流。
作者:terry,如若转载,请注明出处:https://www.web176.com/react/2080.html