Reactjs 服务器端渲染和客户端渲染之间有什么区别?

Reactjs 服务器端渲染和客户端渲染之间有什么区别?,reactjs,client-side,server-side,web-development-server,Reactjs,Client Side,Server Side,Web Development Server,这个问题在网络上有很多文章都在讨论,但考虑到我最近才接触到web开发人员,我想我缺少了一些内容来了解整个情况 我的理解如下: 假设我们有一个Node.js服务器,并且我们的web应用程序使用express。客户端呈现是指我没有在web浏览器中输入URL以创建对服务器的HTTP请求。相反,客户机请求来自一个JS脚本(最初我使用根路由访问应用程序时从服务器加载了该脚本,例如:)。假设我的请求是从数据库中获取关于某个用户的一些信息。例如,JS脚本(使用AJAX)不通过服务器,而是直接向数据库执行XML

这个问题在网络上有很多文章都在讨论,但考虑到我最近才接触到web开发人员,我想我缺少了一些内容来了解整个情况

我的理解如下:

假设我们有一个Node.js服务器,并且我们的web应用程序使用express。客户端呈现是指我没有在web浏览器中输入URL以创建对服务器的HTTP请求。相反,客户机请求来自一个JS脚本(最初我使用根路由访问应用程序时从服务器加载了该脚本,例如:)。假设我的请求是从数据库中获取关于某个用户的一些信息。例如,JS脚本(使用AJAX)不通过服务器,而是直接向数据库执行XMLHTTPRequest(比如,我通过一个名为Fetch的按钮触发它),而不是通过服务器,然后客户端(浏览器)将得到响应,然后创建一个HTML文档并呈现它。与服务器端呈现相反,例如,我在浏览器中输入一个URL,服务器截取请求,准备HTML文档以及请求的数据(如果有的话),并将其以HTML格式发送回浏览器进行呈现(因此,服务器端在客户端没有做任何工作,但实际显示了页面)

这准确吗?我对这两种风格的理解以及何时使用这两种风格缺少什么

假设我们有一个Node.js服务器,并且我们的web应用程序使用express

在服务器上使用什么软件并不重要,但我们将以它为例

客户端呈现是指我没有在web浏览器中输入URL以创建对服务器的HTTP请求。相反,客户机请求来自一个JS脚本(最初我使用根路由访问应用程序时从服务器加载了该脚本,例如:)

这将加载一个HTML文档,该文档使用脚本元素加载JS。您不会直接加载脚本

假设我的请求是从数据库中获取关于某个用户的一些信息。例如,JS脚本(使用AJAX)直接向数据库执行XMLHTTPRequest,而不是遍历服务器

否。您仍然向HTTP服务器发出HTTP请求

(假设我通过一个名为Fetch的按钮触发此操作)而不是通过我的服务器,然后客户端(浏览器)将得到响应,然后创建一个HTML文档并呈现它

伊什

客户端已经有一个HTML文档。通过客户端呈现,可以修改从该文档生成的DOM(通常使用从服务器请求的新数据)

与服务器端呈现相反,例如,我在浏览器中输入URL

为了使场景尽可能接近客户端渲染示例,假设您单击一个链接而不是输入URL

,服务器将拦截该请求

请求是显式地向服务器发出的,不会被拦截。这意味着它是为其他地方设计的

并准备HTML文档以及请求的数据(如果有),并将其以HTML格式发送回浏览器进行呈现(因此,服务器端没有在客户端完成任何工作,而是实际显示页面)

基本上


简短的版本是:

通过服务器端呈现,在服务器上准备完整的HTML文档并将其发送到浏览器


通过客户端渲染,DOM在客户端上被操作以生成相同的文档。

我认为您没有遗漏太多;公平的做法是,将整个过程简化为实际生成HTML代码的地方——要么已经在服务器上生成,要么服务器只是发送数据并让客户端将其放入HTML中。至于何时使用哪一种,我想说是基于观点的。但是,如果您请求大量记录,这意味着使用服务器端呈现,您将发送大量重复的HTML。。。因此,在这种情况下,只发送纯数据,让客户机进行渲染可能更可取。