服务端渲染

208 阅读2分钟

一、Web 发展阶段的几种渲染方式

1.1 传统服务端渲染

网页内容在服务端渲染完成,一次性传输到浏览器。即,浏览器拿到的是全部的 dom 结构。

image.png

1.2 单页面应用

页面内容由 JS 渲染出来,这种方式称为客户端渲染。浏览器拿到的仅有宿主元素 #app,并没有内容。

image.png

1.3 服务端渲染

服务端渲染出完整的首屏 dom 结构返回,前端拿到的内容包括首屏及完整 spa 结构,应用激活后依然按照 spa 方式运行。

image.png

二、服务端渲染

2.1 SSR 是什么

服务端渲染,指在服务端完成页面的 html 拼接处理,然后再发送给浏览器,为不具有交互能力的 html 结构绑定事件和状态,成为完全可交互页面的过程。

2.2 解决的问题

  1. 有利于 SEO

SSR 返回给客户端的是已经获取了异步数据并执行 JavaScript 脚本的最终 html,搜索引擎可以抓取到完整页面的信息,有利于 SEO

  1. 有利于首屏渲染

首屏渲染的是 html 字符串,不依赖 js 文件,因此用户无需等待页面所有 js 加载完成就可以看到页面视图,减少白屏等待时间。

2.3 局限

  1. 服务端压力较大

本来是通过客户端完成渲染,现在统一到服务端node服务去做,尤其是高并发访问的情况,会大量占用服务端CPU资源。

  1. 开发条件受限

在服务端渲染中,createdbeforeCreate 之外的生命周期钩子不可用,因此项目引用的第三方的库也不可用其它生命周期钩子,这对引用库的选择产生了很大的限制。

  1. 学习成本相对较高

除了对webpack、Vue要熟悉,还需要掌握node相关技术。相对于客户端渲染,项目构建、部署过程更加复杂。

2.4 判断页面渲染方式

鼠标右键查看源代码,在页面中看到的内容在源代码中也可以查看到,则是服务端渲染得到的;页面中看到的内容在源代码中不可以查看到,则是客户端渲染得到的。