这个问题有很多关于网络讨论它的文章,但考虑到最近我对网络发展的看法,我认为我缺少一些内容来全面了解。
我的理解如下:
让我们假设我们有一个Node.js服务器,我们正在为我们的网络应用程序使用express。客户端呈现是指我不在Web浏览器中输入向我的服务器创建HTTP请求的URL。相反,客户端请求来自JS脚本(当我使用根路由访问应用程序时,最初从服务器加载,例如:http://localhost:SOME_PORT/)。所以,假设我的请求是从数据库中获取有关某个用户的一些信息。例如,JS脚本(使用AJAX)不是通过服务器,而是直接向数据库执行XMLHTTPRequest(比如我通过一个名为Fetch的按钮触发),而不是通过我的服务器,然后客户端(浏览器)将获得响应,然后将创建一个HTML文档并进行渲染。与服务器端呈现相反,我在浏览器中输入URL,服务器拦截请求,准备HTML文档以及请求的数据(如果有的话),然后以HTML格式将其发送回浏览器渲染(因此在服务器端,没有在客户端完成工作但实际显示页面)。
这准确吗?在理解这两种风格以及何时使用这两种风格时我缺少什么?
答案 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以生成相同的文档。