服务端渲染(Server-Side Rendering)的由来
服务端渲染(Server-Side Rendering, SSR),是指从服务端渲染出前端页面的内容后,直接下发给前端进行展示的渲染过程;与之相对的是客户端渲染(Client-Side Rendering, CSR),是指浏览器负责了页面中大部分内容渲染工作的过程,服务端往往只负责简单的静态资源加载的功能。
从前端发展至今,经历了 SSR -> CSR -> CSR+SSR 的转变过程,也对应了前后端一体 -> 前后端分离 -> BFF(Backend For Frontend) 趋势。我是从 2018 年左右开始接触前端的,这时候 React/Vue 已经很流行了,甚至很多人以为学习前端就是学好 React/Vue 这些框架就好了,其实不然。在最早期的时候,前后端还没有分离,网页内容完全是由服务端渲染的,当时 PHP、JSP (Java Server Pages) 等类似的技术还非常流行,可以根据前端每次请求返回不同的前端 Html 页面内容,前端的 JS 逻辑相对比较简单。后面 JS 逻辑越来越重,出现了 jQuery 这样的前端库,前端也越来越复杂。后面逐渐出现了 Angular、React、Vue、Svelte 这样的前端框架,和 Webpack 等前端构建工具并行发展,前端代码可以组件化、虚拟 DOM 也提升了直接操作 DOM 的性能,jQuery 逐渐退出历史舞台,「前端工程师」的角色也是在这个时候越来越重要了。于是越来越多的逻辑被写在前端代码里,服务端只是负责把 JS, Html, CSS 这些资源下发给浏览器,这也就是客户端渲染(Client-Side Rendering)的模式。