关于服务端渲染
本地打包完的 server.bundle.js 运行时,浏览器拿到的 js 文件返回也是个 HTML
很绝望,还报了Unexpected token <
的错误,js 文件返回的开头竟然是<!DOCTYPE HTML>
,后来发现是因为设置的静态资源Static("dist")
文件夹不对。
浏览器端和服务端的
entry
:
client 使用hydrate
,用来接收通过ReactDOMServer
渲染的 HTML,并且 React 会复用服务端传回来的 HTML ,把事件绑定到已存在的文档上。
|
|
server
|
|
ReactDOMServer
的 API:
-
renderToString
: 返回 HTML 字符串,可以使用这个 API 来服务器端生成 HTML 并在首次请求时返回客户端。 -
renderToStaticMarkup
: 与renderToString
类似,只是这个方法不会生成 React 依赖的内部属性,如data-reactroot
,这个方法适合生成静态页面,因为减少属性值可以节省一些字节,但是如果想生成之后会有交互的页面,不要使用这个方法。 -
renderToNodeStream
: 返回一个Readable stream,并且输出一个 HTML 字符串,这个字符串和renderToString
的返回就是一样的啦。区别在于这个 API 只在服务端可用,且renderToString
是读取完所有的 HTML 之后再返回,而renderToNodeStream
以“流”的形式塞给response
对象,不会等所有的 HTML 都渲染出来才返回。
|
|
renderToStaticNodeStream
: 这个和renderToStaticMarkup
就很像啦,也是适合返回静态页面。
文章作者 youting
上次更新 2019-12-04