一、Web 发展阶段的几种渲染方式
1.1 传统服务端渲染
网页内容在服务端渲染完成,一次性传输到浏览器。即,浏览器拿到的是全部的 dom 结构。
1.2 单页面应用
页面内容由 JS 渲染出来,这种方式称为客户端渲染。浏览器拿到的仅有宿主元素 #app,并没有内容。
1.3 服务端渲染
服务端渲染出完整的首屏 dom 结构返回,前端拿到的内容包括首屏及完整 spa 结构,应用激活后依然按照 spa 方式运行。
二、服务端渲染
2.1 SSR 是什么
服务端渲染,指在服务端完成页面的 html 拼接处理,然后再发送给浏览器,为不具有交互能力的 html 结构绑定事件和状态,成为完全可交互页面的过程。
2.2 解决的问题
- 有利于 SEO
SSR 返回给客户端的是已经获取了异步数据并执行 JavaScript 脚本的最终 html,搜索引擎可以抓取到完整页面的信息,有利于 SEO。
- 有利于首屏渲染
首屏渲染的是 html 字符串,不依赖 js 文件,因此用户无需等待页面所有 js 加载完成就可以看到页面视图,减少白屏等待时间。
2.3 局限
- 服务端压力较大
本来是通过客户端完成渲染,现在统一到服务端node服务去做,尤其是高并发访问的情况,会大量占用服务端CPU资源。
- 开发条件受限
在服务端渲染中,created 和 beforeCreate 之外的生命周期钩子不可用,因此项目引用的第三方的库也不可用其它生命周期钩子,这对引用库的选择产生了很大的限制。
- 学习成本相对较高
除了对webpack、Vue要熟悉,还需要掌握node相关技术。相对于客户端渲染,项目构建、部署过程更加复杂。
2.4 判断页面渲染方式
鼠标右键查看源代码,在页面中看到的内容在源代码中也可以查看到,则是服务端渲染得到的;页面中看到的内容在源代码中不可以查看到,则是客户端渲染得到的。