客户端渲染和跳过服务器渲染方法?
Client side rendering and skipping server rendering approach?
我想在客户端呈现我的页面,以帮助减轻服务器负载并降低流量。我知道第一次调用服务器通常会导致服务器必须呈现请求的页面,然后将该页面发送给用户。当用户与页面交互时,javascript 接管路由,向服务器发送特定视图的请求,然后通过客户端上的 javascript 更新。
我在想这种方法是否存在,是否可行。
假设我想去地址:
www.example.com/about
是否有一种方法可以将 /about
作为参数附加到来自服务器的 html page/javascript 代码(与服务 www.example.com/
的代码相同)。当 dom 在客户端准备就绪时,它会向服务器发送请求以获取 /about
数据,响应会更新客户端视图。这意味着完全跳过服务器端渲染。
还是我疯了?
不,你没疯。这是大多数单页应用程序 (SPA) 框架的工作方式,例如 AngularJS。
例如,我通常为 AngularJS 配置网络服务器的方式是具有以下路由:
/pub/<relative_file_path>
只提供由 <relative_file_path>
指定的静态文件,例如所有的 JS,HTML partials 和 CSS.
/api/<whatever>
是客户端通过 AJAX 访问的所有端点 live
- 其他所有只是returns
index.html
,这是一个静态文件,包含整个页面并引用了 JS,CSS和标记。
因此,当您转到www.example.com/about
时,您将看到index.html
页面,该页面告诉浏览器下载整个应用程序的JS,其中包括客户端路由配置。应用程序启动后,它会看到位置是 www.example.com/about
,并显示 "I know about /about
, I will go to that page!".
当然,"go to that page",我的意思是"fetch the partial HTML for that page, and fetch any data via AJAX"。没有可见页面 refresh/change 发生。
我想在客户端呈现我的页面,以帮助减轻服务器负载并降低流量。我知道第一次调用服务器通常会导致服务器必须呈现请求的页面,然后将该页面发送给用户。当用户与页面交互时,javascript 接管路由,向服务器发送特定视图的请求,然后通过客户端上的 javascript 更新。
我在想这种方法是否存在,是否可行。
假设我想去地址:
www.example.com/about
是否有一种方法可以将 /about
作为参数附加到来自服务器的 html page/javascript 代码(与服务 www.example.com/
的代码相同)。当 dom 在客户端准备就绪时,它会向服务器发送请求以获取 /about
数据,响应会更新客户端视图。这意味着完全跳过服务器端渲染。
还是我疯了?
不,你没疯。这是大多数单页应用程序 (SPA) 框架的工作方式,例如 AngularJS。
例如,我通常为 AngularJS 配置网络服务器的方式是具有以下路由:
/pub/<relative_file_path>
只提供由<relative_file_path>
指定的静态文件,例如所有的 JS,HTML partials 和 CSS./api/<whatever>
是客户端通过 AJAX 访问的所有端点 live- 其他所有只是returns
index.html
,这是一个静态文件,包含整个页面并引用了 JS,CSS和标记。
因此,当您转到www.example.com/about
时,您将看到index.html
页面,该页面告诉浏览器下载整个应用程序的JS,其中包括客户端路由配置。应用程序启动后,它会看到位置是 www.example.com/about
,并显示 "I know about /about
, I will go to that page!".
当然,"go to that page",我的意思是"fetch the partial HTML for that page, and fetch any data via AJAX"。没有可见页面 refresh/change 发生。