服务端渲染、客户端渲染、同构渲染相关简介

什么是渲染

把【数据】+【模板】拼接到一起

传统的服务端渲染

最早的web页面渲染都是在服务端进行的,也就是服务端在运行过程中将数据+模块拼接到一起,然后返回html给客户端,客户端直接展示就行。
流程图如下:
服务端渲染、客户端渲染、同构渲染相关简介

服务端渲染的缺点:

  • 前后端代码完全耦合在一块,不利于开发和维护
  • 前端没有足够的发挥空间
  • 服务端压力大
  • 用户体验一般,用户需要刷新才能重新获取数据

客户端渲染

因为服务器渲染存在上述问题,且伴随着ajax的产生,使得我们可以动态获取数据。

服务端渲染、客户端渲染、同构渲染相关简介
我们现在常见的SPA单页面如Vue\React采用的都是客户端渲染。
客户端渲染优点:

  • 用户体验好
  • 开发效率高
  • 渲染性能好
  • 可维护性好
    客户端缺点:
  • 首屏渲染时间长,单页面利用js生成页面,这会导致用户需要等待首屏
  • 不利于seo:当搜索引擎爬取html的时候是没内容的,因为要客户端js解析完生成html

为了解决以上问题,业界又提出了服务端渲染,借鉴了传统的服务端渲染,我们一般称之为现代化的服务端渲染或同构渲染。

现代化服务端渲染(同构渲染)

客户端存在首屏渲染慢、不利于seo问题,现代化的服务端渲染是如何解决的呢?采用后端渲染+前端渲染的模式,也称同构渲染。

  • 基于React、Vue等框架,客户端渲染和服务器端渲染的结合
    • 在服务器端执行一次,用于实现服务器端渲染(首屏直出)
    • 在客户端再执行一次,用于接管页面交互
  • 核心解决SEO和首屏渲染慢的问题
  • 拥有传统服务端渲染的优点,也有客户端渲染的优点

同构渲染的流程:
服务端渲染、客户端渲染、同构渲染相关简介

如何实现同构渲染?

  • 使用Vue\React的官方解决方案
    • 优点:有助于理解原理
    • 缺点:需要搭建环境,比较麻烦
  • 使用第三方解决方案
    • React的Next.js
    • Vue的Nuxt.js