反应客户端和服务器端渲染

Posted

技术标签:

【中文标题】反应客户端和服务器端渲染【英文标题】:React both client side and server side rendering 【发布时间】:2017-12-29 21:51:18 【问题描述】:

我正在开发一个反应应用程序。 我的要求是:- 1) 前两页应始终从服务器端呈现。 2) 休息页面应该在客户端渲染。

例如:- http://foo.com 和 http://foo.com/about 我想总是从服务器端渲染。 http://foo.com/FAQ, http://foo.com/contact 我想从客户端渲染。

实现这一目标的正确方法是什么?

【问题讨论】:

你使用的是什么后端? 我使用 express 作为后端 【参考方案1】:

您应该使用ReactDOMServer,特别是renderToString() 方法。

ReactDOMServer.renderToString(element)

渲染一个 React 元素到它的 初始 html。这应该只在服务器上使用。反应意志 返回一个 HTML 字符串。您可以使用此方法在 服务器并在初始请求上发送标记以获取更快的页面 加载并允许搜索引擎抓取您的页面以进行 SEO 目的。

如果你在一个已经有这个的节点上调用 ReactDOM.render() 服务器渲染的标记,React 将保留它并且只附加事件 处理程序,允许您进行非常高效的首次加载 经验。

【讨论】:

我需要在哪里定义路由?如果我使用上述方法,那么第二页将由客户端生成 您需要在一个单独的文件中定义它,这将是您的 expressjs 默认文件,即您的服务器。有关更多信息,请参阅反应路由器文档。如果您使用 Link 导航,则第二页及以后的页面将是客户端。

以上是关于反应客户端和服务器端渲染的主要内容,如果未能解决你的问题,请参考以下文章

react + redux + saga +服务器端渲染+如何停止服务器端渲染页面的额外ajax调用?

反应服务器端渲染 - webpack的“样式加载器”失败

尽管所有反应路由器版本冲突,如何在反应中进行服务器端渲染?

哪种方法更快,表示:服务器端渲染与客户端渲染

与服务器端渲染堆栈反应

如何在反应服务器端渲染中正确处理 window=undefined 错误