浅谈node做中间层以及什么是服务端渲染

一、什么是服务端渲染

客户端渲染路线:

1. 请求一个html

2. 服务端返回一个html  

3. 浏览器下载html里面的js/css文件

4. 等待js文件下载完成

5. 等待js加载并初始化完成

 6. js代码终于可以运行,由js代码向后端请求数据( ajax/fetch )

7. 等待后端数据返回

8. dom( 客户端 )从无到完整地,把数据渲染为响应页面

服务端渲染路线:

1. 请求一个html

2. 服务端请求数据( 内网请求快 )

3. 服务器初始渲染(服务端性能好,较快)

4. 服务端返回已经有正确内容的页面

5. 客户端请求js/css文件

6. 等待js文件下载完成

7. 等待js加载并初始化完成

 8. ( 客户端 )把剩下一部分渲染完成( 内容小,渲染快 )

时间耗时比较:

1. 数据请求:由服务端请求数据而不是客户端请求数据,这是“快”的一个主要原因。服务端在内网进行请求,数据响应速度快。客户端在不同网络环境进行数据请求,且外网http请求开销大,导致时间差(主要原因)。

2. 步骤:服务端是先请求数据然后渲染“可视”部分,而客户端是等待js代码下载、加载完成再请求数据、渲染。即:服务端渲染不用等待js代码下载完成再请求数据,并会返回一个已经有内容的页面。

3. 渲染性能:服务端性能比客户端高,渲染速度快( 猜测,该项数据不详 )。

4. 渲染内容:服务端渲染会把”可视“部分先渲染,然后交给客户端再作部分渲染。而客户端渲染,则是从无到有,需要经历完整的渲染步骤。 

二、为什么用node做中间层

后端出于性能和别的原因,提供的接口所返回的数据也许不适合前端直接使用。前端所需的排序功能、筛选功能,以及到了视图层的页面展现,也许都需要对接口的所提供的数据进行二次处理。这些处理虽可以放在前端来进行,但也许数据量一大便会浪费浏览器性能。因而至今,曾加node端便是一种良好的解决方案。

很多项目中后端应用往往不止一个服务,而是一群各司其职的服务,比如nginx的存在就是因为服务器上运行着多个服务,而不同的网络请求由不同的服务处理,需要在这些服务前假设一层nginx做为代理,将请求分发给不同的服务,nginx在这里的角色就相当于中间层

对于一个比较复杂的web站点,页面中的请求通常分为两种,请求页面与请求数据(ajax)。如果后端是个单体应用,当发现所有请求量太多应付不过来的时候就可以考虑做这样的分离将处理页面渲染的请求分给另一个服务,挡在前面,自己只负责数据相关的请求nodejs擅长处理io密集型任务,很适合做处理页面渲染的服务,于是很多人选择了nodejs。淘宝也是类似的架构,据说现在所有淘宝的页面都是由node服务渲染的。

vue服务端渲染:

1、https://ssr.vuejs.org/

2、Nuxt.js

从头搭建一个服务端渲染的应用是相当复杂的。幸运的是,我们有一个优秀的社区项目 Nuxt.js 让这一切变得非常简单。Nuxt 是一个基于 Vue 生态的更高层的框架,为开发服务端渲染的 Vue 应用提供了极其便利的开发体验。更酷的是,你甚至可以用它来做为静态站生成器。推荐尝试。

猜你喜欢

转载自blog.csdn.net/lbPro0412/article/details/88298972