客户端渲染和跳过服务器渲染方法?

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
  • 其他所有只是returnsindex.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 发生。