一、服务端渲染(SSR)是什么

用户使用的浏览器浏览的都是一些没有复杂逻辑的、简单的页面,这些页面都是在后端将 html 拼接好的,然后返回给前端完整的 html 文件,浏览器拿到这个 html 文件之后就可以直接解析展示了,这也就是所谓的服务器端渲染。
将组件或页面通过服务器生成HTML字符串,在发送到游览器,最后将静态标记 “混合”为客户端上完全交互的应用程序。

二、客户端渲染(CSR)是什么

随着前端页面的复杂性提高,前端就不仅仅是普通的页面展示了,可能是添加更多功能的组件,复杂性更大,另外,此时 ajax 的兴起,使得页面就开始崇拜前后端分离的开发模式,即后端不提供完整的 html 页面,而是提供一些 api 使得前端可以获取 json 数据,然后前端拿到 json 数据之后再在前端进行 html 页面的拼接,然后展示在浏览器上,这就是所谓的客户端渲染

三、SSR的优势

服务器端渲染的优势就是容易 SEO,首屏加载快,因为客户端接收到的是完整的 HTML 页面。

利于SEO:不同爬虫工作原理类似,只会爬取源码,不会执行网站的任何脚本,使用了React或者其它MVVM框架之后,页面大多数DOM元素都是在客户端根据js动态生成,可供爬虫抓取分析的内容大大减少(如图一)。另外,浏览器爬虫不会等待我们的数据完成之后再去抓取我们的页面数据。服务端渲染返回给客户端的是已经获取了异步数据并执行JavaScript脚本的最终HTML,网络爬中就可以抓取到完整页面的信息。

首屏加载快:首页是通过node加载的HTML字符串,用户直接可以看到完整HTML,所以更快。

服务端渲染的缺点:
1.不容易维护,通常前端改了部分html或者css,后端也需要修改。
2.会增加项目整体复杂度(前后端耦合,互相依赖 (较高的学习成本))。
3.库的支持性(兼容性)
4.对服务器压力较大

四、CSR的优势

节省后端资源,局部刷新页面,多端渲染,前后端分离。

1、节省后端资源。
即服务器端完成html模板的解析,如果请求较多,会对服务器造成一定的访问压力。而如果使用前端渲染,就是把这些解析的压力分摊了前端。

2、便于前后端分离。
前端专注于前端UI,后端专注于api开发,且前端有更多的选择性,而不需要遵循后端特定的模板.

3、用户体验更好。
比如,我们将网站做成SPA或者部分内容做成SPA,这样,尤其是移动端,可以使体验更接近于原生app。

客户端渲染的缺点:

1.不利于SEO、爬虫看不到完整的程序源码
2.首屏渲染慢(渲染前需要下载一堆js和css等)
服务端渲染(SSR) 和客户端渲染(CSR)-编程知识网
服务端渲染(SSR) 和客户端渲染(CSR)-编程知识网
服务端渲染(SSR) 和客户端渲染(CSR)-编程知识网
服务端渲染(SSR) 和客户端渲染(CSR)-编程知识网