导读

本文主要是从三个方面学习服务端渲染,内容整理自多个博客。

服务端渲染是什么?什么是服务端渲染?(服务端渲染的运行机制)

为什么使用服务端渲染?服务端渲染解决了什么问题?

什么情况下使用服务端渲染?(服务端渲染的应用实例与使用场景)

一、概念

首先,说到服务端渲染我们要先对渲染这个概念有一个大概的了解

渲染:就是将数据和模版组装成html

客户端渲染(CSR)VS服务端渲染(SSR)

那么,为了更好的理解服务端渲染,我们也很有必要去了解一下客户端渲染。将客户端渲染与服务端渲染同时进行学习理解。

1.客户端渲染

1.1概念

解释一:客户端渲染模式下,服务端把渲染的静态文件给到客户端,客户端拿到服务端发送过来的文件自己跑一遍js,根据JS运行结果,生成相应DOM,然后渲染给用户。

解释二:html 仅仅作为静态文件,客户端在请求时,服务端不做任何处理,直接以原文件的形式返回给客户端客户端,然后根据 html 上的 JavaScript,生成 DOM 插入 html。

延伸:前端渲染的方式起源于JavaScript的兴起,ajax的大热更是让前端渲染更加成熟,前端渲染真正意义上的实现了前后端分离,前端只专注于UI的开发,后端只专注于逻辑的开发,前后端交互只通过约定好的API来交互,后端提供json数据,前端循环json生成DOM插入到页面中去。

1.2.利弊

好处: 网络传输数据量小、减少了服务器压力、前后端分离、局部刷新,无需每次请求完整页面、交互好可实现各种效果

坏处:不利于SEO、爬虫看不到完整的程序源码、首屏渲染慢(渲染前需要下载一堆js和css等)

2.服务端渲染

2.1.概念

解释一:服务端在返回 html 之前,在特定的区域,符号里用数据填充,再给客户端,客户端只负责解析 HTML 。

解释二:服务端渲染的模式下,当用户第一次请求页面时,由服务器把需要的组件或页面渲染成 HTML 字符串,然后把它返回给客户端。客户端拿到手的,是可以直接渲染然后呈现给用户的 HTML 内容,不需要为了生成 DOM 内容自己再去跑一遍 JS 代码。使用服务端渲染的网站,可以说是“所见即所得”,页面上呈现的内容,我们在 html 源文件里也能找到。

2.2.利弊

好处:首屏渲染快、利于SEO、可以生成缓存片段,生成静态化文件、节能(对比客户端渲染的耗电)

坏处:用户体验较差、不容易维护,通常前端改了部分html或者css,后端也需要修改。

3.对比

其实前后端的渲染本质是一样的,都是字符串的拼接,将数据渲染进一些固定格式的html代码中形成最终的html展示在用户页面上。 因为字符串的拼接必然会损耗一些性能资源。

如果在服务器端渲染,那么消耗的就是server端的性能。

如果是在客户端渲染,常见的手段,比如是直接生成DOM插入到html 中,或者是使用一些前端的模板引擎等。他们初次渲染的原理大多是将原html中的数据标记(例如{{text}})替换。

二、为什么使用服务端渲染,它解决的是什么问题

简单总结起来就是两点:

首屏加载快

相比于加载单页应用,我只需要加载当前页面的内容,而不需要像 React 或者 Vue 一样加载全部的 js 文件

SEO 优化

对于单页应用,搜索引擎并不能收录到 ajax 爬取数据之后然后再动态 js 渲染出来的页面。

为了更便于理解,下面几段话摘自掘金小册:

事实上,很多网站是出于效益的考虑才启用服务端渲染,性能倒是在其次。

假设 A 网站页面中有一个关键字叫“前端性能优化”,这个关键字是 JS 代码跑过一遍后添加到 HTML 页面中的。那么客户端渲染模式下,我们在搜索引擎搜索这个关键字,是找不到 A 网站的——搜索引擎只会查找现成的内容,不会帮你跑 JS 代码。A 网站的运营方见此情形,感到很头大:搜索引擎搜不出来,用户找不到我们,谁还会用我的网站呢?为了把“现成的内容”拿给搜索引擎看,A 网站不得不启用服务端渲染。

但性能在其次,不代表性能不重要。服务端渲染解决了一个非常关键的性能问题——首屏加载速度过慢。在客户端渲染模式下,我们除了加载 HTML,还要等渲染所需的这部分 JS 加载完,之后还得把这部分 JS 在浏览器上再跑一遍。这一切都是发生在用户点击了我们的链接之后的事情,在这个过程结束之前,用户始终见不到我们网页的庐山真面目,也就是说用户一直在等!相比之下,服务端渲染模式下,服务器给到客户端的已经是一个直接可以拿来呈现给用户的网页,中间环节早在服务端就帮我们做掉了,用户岂不“美滋滋”?

三、 什么情况下使用服务端渲染?

通过服务端渲染的概念以及它的两个特点:首屏加载速度快、SEO优化。

我们知道,服务端渲染其实就是由浏览器做的一些事情,我们放到了服务端去做,那么对于掘金、简书、CSDN、知乎等网站的搭建,这种在网上一搜搜出一堆东西的网站,SEO做的很好,应该多少都用到服务端渲染了吧?当然,做服务端渲染成本是高昂的。

vue全家桶或者react全家桶,都是推荐通过服务端渲染来实现路由的。

服务端渲染并非完全之策(服务器稀少而宝贵),关于首屏渲染体验以及SEO的优化方案很多,在不使用服务端渲染这个操作下,我们最好的处理方式就是找寻替代优化方案。

关于在server端还是在browser端渲染的选择,更多的是要看业务场景。

相关文章延伸阅读

ssr Android简书,渲染篇一:服务端渲染(SSR)相关推荐

  1. ssr Android简书,Vue 服务端渲染(SSR)

    什么是服务端渲染,简单理解是将组件或页面通过服务器生成html字符串,再发送到浏览器,最后将静态标记"混合"为客户端上完全交互的应用程序.于传统的SPA(单页应用)相比,服务端渲染 ...

  2. 17 SSR:使用 React.js 开发 Serverless 服务端渲染应用

    今天我想和你聊一聊怎么用 Serverless 开发一个服务端渲染(SSR)应用. 对前端工程师来说,Serverless 最大的应用场景之一就是开发服务端渲染(SSR)应用.因为传统的服务端渲染应用 ...

  3. ssr Android简书,react服务端渲染ssr

    Next.js 一个轻量级的 React 服务端渲染框架 1 概念 SPA single page application : 单页面应用程序 缺点:首屏加载慢,不利于SEO SSR Server-s ...

  4. ssr Android简书,react ssr 初体验

    用到的技术栈 react 16 + webpack3 + koa2 看看它是如何实现服务端渲染的,here we go! 为什么要用服务端渲染 优点 无非就是两点 SEO 友好 加快首屏渲染,减少白屏 ...

  5. 【SSR】287- 从头开始,彻底理解服务端渲染原理

    本文出自「掘金社区」,欢迎戳「阅读原文」链接和作者进行技术交流 ?? 大家好,我是神三元,这一次,让我们来以 React 为例,把服务端渲染(Server Side Render,简称"SS ...

  6. 客户端渲染(CSR)和服务端渲染(SSR)差别

    文章目录 客户端渲染 服务端渲染 两者区别 客户端渲染 当用户发送请求返回页面,此时页面只是一个模板页面,浏览器解析页面的代码是通过js读取时,根据我们所写的接口去请求数据,得到返回的数据使用页面的模 ...

  7. 服务端渲染css,vue服务端渲染提取css

    vue服务端渲染,提取css单独打包的好处就不说了,在这里主要说的是抽取css的方法 要从 *.vue 文件中提取 CSS,可以使用 vue-loader 的 extractCSS 选项(需要 vue ...

  8. 服务端渲染可以用ajax吗,服务端渲染(SSR)

    导读 本文主要是从三个方面学习服务端渲染,内容整理自多个博客. 服务端渲染是什么?什么是服务端渲染?(服务端渲染的运行机制) 为什么使用服务端渲染?服务端渲染解决了什么问题? 什么情况下使用服务端渲染 ...

  9. react native text换行_基于React+Koa实现React SSR服务端渲染

    React Server-Side Rendering 其实这个概念很早之前就有了解了,出于没有应用场景原因,之前一直都只停留在了解API的层面,未曾去实践.快到周末闲来无事,自己复盘了下之前做的新商 ...

最新文章

  1. 印度程序员为什么牛掰之ISAS.激发人的兴趣.探索精神.
  2. Php错误邮件提示linux,linux下phpmailer发送邮件出现SMTP ERROR: Failed to connect to server: (0)错误...
  3. Linux网络参数设置
  4. 项目实战之服务端分页的实现——SQL
  5. 【Unity3d】【项目学习心得】从资源服务器下载资源(二)
  6. spark指定类型+列名 将RDD转化成DataFrame
  7. Linux shell 上机编程-----习题
  8. 人工智能视频教程下载
  9. android qq 微信绑定,QQ或微信互联快捷登录怎么绑定微信提醒?
  10. JavaScript如何计算两个日期之间的时间差?
  11. 任正非:无法退休的老人
  12. Android Espresso(四)——RecyclerView
  13. 好用的日历 android,手机日历软件哪个最好用?日历app排行榜(10款)
  14. 产品经理基本功,如何画一个满分原型?
  15. Linux开机启动、bashrc、定时任务
  16. 来聊聊,今年各互联网大厂的年终奖......
  17. 我司工程师荣获2020年度网络安全等级保护测评体系建设工作表现突出个人
  18. c语言计算阶乘的倒数,C#计算阶乘和的倒数
  19. 信息化技术在农业上的应用
  20. ReactiveX/RxJava V3.0.0版本

热门文章

  1. 奥凯航空项目(一登录账号后台代码)
  2. jsonp跨域的原理以及优缺点
  3. C#中将数字金额转成英文大写金额的函数
  4. 怎么用php编写论坛,php编写简单论坛总结
  5. Python+人工智能基础大纲
  6. 记录装禅道XAMPP过程中 遇到的端口问题(1)
  7. RF踩坑之调用pyautogui鼠标操作报错
  8. IT职业技能图谱(全套13张)
  9. 58同城数据分析笔试2020年10月
  10. 这样的情书,女生会喜欢吗