服务器端和客户端呈现有什么区别?

时间:2016-05-18 21:58:39

标签: reactjs client-side server-side web-development-server

这个问题有很多关于网络讨论它的文章,但考虑到最近我对网络发展的看法,我认为我缺少一些内容来全面了解。

我的理解如下:

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

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

1 个答案:

答案 0 :(得分:3)

  

让我们假设我们有一个Node.js服务器,我们正在为我们的网络应用程序使用express。

您在服务器上使用的软件并不重要,但我们将使用它作为示例。

  

客户端呈现是指我未在Web浏览器中输入向我的服务器创建HTTP请求的URL。相反,客户端请求来自JS脚本(当我使用根路由访问应用程序时,最初从服务器加载,例如:http://localhost:SOME_PORT/)。

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

  

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

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

  

(比如我通过一个名为Fetch的按钮触发),而不是通过我的服务器,然后客户端(浏览器)将得到一个响应,然后将创建一个HTML文档并进行渲染。

的Ish。

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

  

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

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

  

,服务器拦截请求,

请求明确发送到服务器,不会被截获。这意味着它打算用于其他地方。

  

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

基本上

简短版本是:

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

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