当前位置: 首页 > 知识库问答 >
问题:

ReactJS服务器端渲染vs客户端渲染

柯奕
2023-03-14

我刚刚开始研究ReactJS,发现它提供了两种呈现页面的方法:服务器端和客户端。但是,我不明白如何一起使用它。构建应用程序有两种不同的方法,还是可以一起使用?

如果我们可以一起使用它,如何做到这一点——我们需要在服务器端和客户端复制相同的元素吗?或者,我们可以只在服务器上构建应用程序的静态部分,在客户端构建动态部分,而不与已经预渲染的服务器端建立任何连接吗?

共有3个答案

凌清夷
2023-03-14

事实上,我很好奇同样的研究,虽然你正在寻找的答案在评论中给出了,但我觉得它应该更突出,因此我写这篇文章(一旦我能想出一个更好的方法,我会更新它,因为我发现解决方案在架构上至少有问题)。

您需要同时考虑这两种方式来编写组件,因此基本上在每个位置都放置if开关,以确定您是在客户端还是服务器上,然后执行DB查询(或服务器上任何适当的操作)或REST调用(在客户端上)。然后,您必须编写生成数据的endpoint,并将其公开给客户机。

再次,很高兴了解更清洁的解决方案。

贝滨海
2023-03-14

图片来源:沃尔玛实验室工程博客

注意:SSR(服务器端渲染),CSR(客户端渲染)。

主要区别在于,对于SSR,服务器对客户端浏览器的响应包括要呈现的页面的HTML。同样重要的是要注意,尽管使用SSR,页面渲染速度更快。在下载JS文件并且浏览器执行React之前,页面将不会准备好进行用户交互。

一个缺点是SSR TTFB(时间到第一字节)可能会稍微长一点。可以理解,因为服务器需要一些时间来创建超文本标记语言文档,这反过来又会增加服务器的响应大小。

米楚青
2023-03-14

对于给定的网站/Web应用程序,您可以使用客户端、服务器端或两者。

在这里,您完全是在浏览器上运行ReactJS。这是最简单的设置,包括大多数示例(包括上的示例)http://reactjs.org)。服务器呈现的初始HTML是占位符,加载所有脚本后,整个UI将在浏览器中呈现。

这里可以将ReactJS看作服务器端模板引擎(如jade、Handlebar等)。服务器呈现的HTML包含应有的UI,您不必等待任何脚本加载。您的页面可以被搜索引擎索引(如果不执行任何javascript)。

由于UI是在服务器上呈现的,因此您的事件处理程序都无法工作,并且没有交互性(您有一个静态页面)。

这里,初始渲染在服务器上。因此,浏览器接收的HTML具有应有的UI。加载脚本后,将再次重新呈现虚拟DOM,以设置组件的事件处理程序。

在这里,您需要确保使用与在服务器上渲染相同的props重新渲染完全相同的虚拟DOM(根组件)。否则,ReactJS将抱怨服务器端和客户端虚拟DOM不匹配。

由于ReactJS在重新渲染之间区分虚拟DOM,因此真实DOM不会发生突变。只有事件处理程序绑定到真正的DOM元素。

 类似资料:
  • 问题内容: 我刚刚开始研究ReactJS,发现它为您提供了两种渲染页面的方法:服务器端和客户端。但是,我不知道如何一起使用。是使用两种单独的方法来构建应用程序,还是可以将它们一起使用? 如果可以一起使用,该如何做- 我们是否需要在服务器端和客户端重复相同的元素?或者,我们是否可以仅在服务器上构建应用程序的静态部分,而在客户端构建动态部分,而无需与已经预先渲染的服务器端建立任何连接? 问题答案: 对

  • 如果你调研服务器端渲染(SSR)只是用来改善少数营销页面(例如/,/about,/contact等)的 SEO,那么你可能需要预渲染。无需使用 web 服务器实时动态编译 HTML,而是使用预渲染方式,在构建时(build time)简单地生成针对特定路由的静态 HTML 文件。优点是设置预渲染更简单,并可以将你的前端作为一个完全静态的站点。 如果你使用 webpack,你可以使用prerende

  • info 如果您能了解下面这些技术,能加快您对本文的了解 vuex - Vue.js 应用程序开发的状态管理模式 Vue.js SSR - Vue.js 服务器端渲染 webpack - 编译构建工具 Lavas 服务器端渲染模板参考了 vue-hackernews 的渲染和开发机制,并且结合了 Lavas 的 App Shell 模板,导出的工程中会有 App Shell 等 如果您不了解 vu

  • React 提供了两个方法 renderToString 和 renderToStaticMarkup 用来将组件(Virtual DOM)输出成 HTML 字符串,这是 React 服务器端渲染的基础,它移除了服务器端对于浏览器环境的依赖,所以让服务器端渲染变成了一件有吸引力的事情。 服务器端渲染除了要解决对浏览器环境的依赖,还要解决两个问题: 前后端可以共享代码 前后端路由可以统一处理 Rea

  • 服务端渲染一个很常见的场景是当用户(或搜索引擎爬虫)第一次请求页面时,用它来做初始渲染。当服务器接收到请求后,它把需要的组件渲染成 HTML 字符串,然后把它返回给客户端(这里统指浏览器)。之后,客户端会接手渲染控制权。 下面我们使用 React 来做示例,对于支持服务端渲染的其它 view 框架,做法也是类似的。 服务端使用 Redux 当在服务器使用 Redux 渲染时,一定要在响应中包含应用

  • 准备动作 1、安装nodejs与安装express 安装nodejs教程:http://www.cnblogs.com/pigtail/archive/2013/01/08/2850486.html 安装 express 教程:https://www.wenjiangs.com/doc/f5jxm7ii 2、安装node-jsx(使nodejs支持jsx语法) $ npm install node