服务端渲染(Server Side Rendering)顾名思义即是在服务端将载入数据的组件渲染为 HTML 然后返回给客户端以直接显示,我们也可以通过类似于插入window.APP_DATA = data
的方式将数据传入到 HTML 文档中。总体而言,服务端渲染可能会造成一定的带宽浪费,不过其能够优化用户的首屏加载时间与搜索引擎解析。在正式介绍服务端渲染之前我们还需要明晰下前后端分离与服务端渲染之间概念的差异。早期的网页是数据、模板与样式的混合,即以经典的 APS.NET、PHP 与 JSP 为例,是由服务端的模板提供一系列的标签完成从业务逻辑代码到页面的流动。彼时,前端只是用来展示数据,而随着 Ajax 技术的流行,将 WebAPP 也视作 CS 架构;抽象来说,会认为 CS 是客户端与服务器之间的双向通信,而 BS 是客户端与服务端之间的单向通信。从初始打开这个网页到最终关闭,网页本身也有了一套自己的状态,而拥有这种变化的状态的基础就是 AJAX ,即从单向通信变成了双向通信。在这个衍化的过程中我们发现前后端未分离的一个重要特性就是页面是在服务端生成的,而服务端渲染虽然也是提倡在服务端即生成界面,但是其整体的技术栈却已是围绕富客户端框架的一系列新兴技术。我们现在称之为服务端渲染的技术并非传统的以 JSP、PHP 为代表的服务端模板数据填充,更准确的服务端渲染作用的描述是对于客户端应用的预启动与预加载。引入服务端渲染带来的优势主要在于以下三个方面: