0532-8980-5951  131-5685-3701

Branding News

为您的品牌提供借鉴,提高自身审美水平!

前后端分离的技术分析一

  • 0次浏览
  • 2019-07-09 22:51:56

前后端分离架构概述


步骤如下:

浏览器请求,CDN返回HTML页面;
HTML中的JS代码以Ajax方式请求后台的Restful接口;
接口返回Json数据,页面解析Json数据,通过Dom操作渲染页面;
后端提供的都是以JSON为数据格式的API接口供Native端使用,同样提供给WEB的也是JSON格式的API接口。

那么意味着WEB工作流程是:

打开web,加载基本资源,如CSS,JS等;
发起一个Ajax请求再到服务端请求数据,同时展示loading;
得到json格式的数据后再根据逻辑选择模板渲染出DOM字符串;
将DOM字符串插入页面中web view渲染出DOM结构;
这些步骤都由用户所使用的设备中逐步执行,也就是说用户的设备性能与APP的运行速度联系的更紧换句话说就是如果用户的设备很低端,那么APP打开页面的速度会越慢。

为什么说是半分离的?因为不是所有页面都是单页面应用,在多页面应用的情况下,前端因为没有掌握controller层,前端需要跟后端讨论,我们这个页面是要同步输出呢,还是异步Json渲染呢?而且,即使在这一时期,通常也是一个工程师搞定前后端所有工作。因此,在这一阶段,只能算半分离。

首先,这种方式的优点是很明显的。前端不会嵌入任何后台代码,前端专注于HTML、CSS、JS的开发,不依赖于后端。自己还能够模拟Json数据来渲染页面。发现Bug,也能迅速定位出是谁的问题。

然而,在这种架构下,还是存在明显的弊端的。最明显的有如下几点:

JS存在大量冗余,在业务复杂的情况下,页面的渲染部分的代码,非常复杂;
在Json返回的数据量比较大的情况下,渲染的十分缓慢,会出现页面卡顿的情况;
SEO( Search Engine Optimization,即搜索引擎优化)非常不方便,由于搜索引擎的爬虫无法爬下JS异步渲染的数据,导致这样的页面,SEO会存在一定的问题;
资源消耗严重,在业务复杂的情况下,一个页面可能要发起多次HTTP请求才能将页面渲染完毕。可能有人不服,觉得PC端建立多次HTTP请求也没啥。那你考虑过移动端么,知道移动端建立一次HTTP请求需要消耗多少资源么?
正是因为如上缺点,我们才亟需真正的前后端分离架构。

4、分离时代

在前后端彻底分离这一时期,前端的范围被扩展,controller层也被认为属于前端的一部分。在这一时期:

前端:负责View和Controller层。
后端:只负责Model层,业务/数据处理等。
可是服务端人员对前端HTML结构不熟悉,前端也不懂后台代码呀,controller层如何实现呢?这就是node.js的妙用了,node.js适合运用在高并发、I/O密集、少量业务逻辑的场景。最重要的一点是,前端不用再学一门其他的语言了,对前端来说,上手度大大提高。



前后端分离架构概述


可以就把Nodejs当成跟前端交互的api。总得来说,Nodejs的作用在mvc中相当于C(控制器)。Nodejs路由的实现逻辑是把前端静态页面代码当成字符串发送到客户端(例如浏览器),简单理解可以理解为路由是提供给客户端的一组api接口,只不过返回的数据是页面代码的字符串而已。

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

前后端分离架构概述
浏览器(webview)不再直接请求JSP的API,而是:

浏览器请求服务器端的NodeJS;
NodeJS再发起HTTP去请求JSP;
JSP依然原样API输出JSON给NodeJS;
NodeJS收到JSON后再渲染出HTML页面;
NodeJS直接将HTML页面flush到浏览器;
这样,浏览器得到的就是普通的HTML页面,而不用再发Ajax去请求服务器了。

淘宝的前端团队提出的中途岛(Midway Framework)的架构如下图所示:

前后端分离架构概述
增加node.js作为中间层,具体有哪些好处呢?

1、适配性提升;我们其实在开发过程中,经常会给PC端、mobile、app端各自研发一套前端。其实对于这三端来说,大部分端业务逻辑是一样的。唯一区别就是交互展现逻辑不同。

如果controller层在后端手里,后端为了这些不同端页面展示逻辑,自己维护这些controller,模版无法重用,徒增和前端沟通端成本。 如果增加了node.js层,此时架构图如下:


相关资讯

微信封杀10大分销平台主要是违反了什么规则

  • 2018-07-07

微信封杀10大分销平台主要是违反了什么规则 查看详情

淘宝搜索的商品排名的十大要素

  • 2018-07-07

淘宝搜索的商品排名的十大要素 查看详情


联系我们

  • 地址:青岛开发区峨眉山路396号(青岛光谷软件园5号楼3楼)
  • 热线: 0532-8980-5951
  • 直线: 131-5685-3701
  • Email: 156590827@qq.com

2秒 极速开启页面 | 承诺服务期内网站 99.99% 安全可用 | 10 分钟上手的傻瓜式后台 | 定制前端,也定制后端,我们 专注 深度定制 | 绝对专业交付机制,禁止捆绑销售
TAG:青岛开发区网站建设、黄岛网站建设、青岛公众号开发、青岛app开发、青岛小程序开发

部分客户

青啤、青啤、海尔、海信、澳柯玛、双星、即发、青钢、颐中集团、 白樱花牌面粉、 波尼亚牌肉制品、 岛牌电热毯、 孚德牌女鞋 亨达牌皮鞋、 喜盈门牌毛巾被、 长生牌浓香花生油、 即发牌系列 、 英派斯系列产品、 喜盈门系列产品、 白雪系列文具、 亨达皮鞋、 一支笔香烟、 崂山矿泉水、 华东葡萄酒、 琅琊台白酒、 即墨黄酒、 波尼亚等。

所有客户均有合同可追溯,严谨盗用!

30
在线咨询
热线

服务热线
0532-8980-5951

微信