前后端分离浅析
什么是前后端分离?
前后端为什么要分离?
前后端怎么样分离的?
前后端分离给我们前端技术⼈员的开发带来什么样的好处?
下⾯我就带着这些问题,来简单谈谈我了解到的前后端分离情况。
在讲前后端分离之前,让我们先讲⼀讲什么是MVC?
  MVC诞⽣于上世纪70年代,是⼀种经典的设计模式,全名为 Model-View-Controller,即模型-视图-控制器。其中模型是⽤于封装数据的载体,视图偏重于展现、决定了界⾯的样⼦,⽽控制器主要⽤于粘合模型和视图的。这个模式的出现,让开发更加⾼效,让代码耦合度尽量减⼩,让应⽤程序各部分的职责更加清晰。
  但是在这个模式下,每次浏览器请求都必须经过“控制器→模型→视图”的流程,过程较复杂,⽽当时渲染
视图的过程还是由服务器端来实现的,最终呈现给浏览器的是带有模型的视图页⾯,这样性能就⽆法得到优化。
  这个时候就是前端后端完全没有分离的时候,这时候的前端还仅仅局限于展⽰⼀个页⾯,⼀般扮演的只是切图的⼯作,只是简单地将UI 设计师提供的原型图实现成静态的HTML页⾯,俗称页⾯仔。⽽具体的页⾯交互逻辑,都是由后台的开发⼈员来实现的。
ajax诞⽣了
  ajax于1998年得到应⽤,它的应⽤使数据展现的过程更加直接,并且提供了更好的⽤户体验。
  这个时候,⾸先从浏览器发送 AJAX 请求,然后服务端接受该请求、并返回 JSON 数据给浏览器,最后在浏览器中进⾏界⾯渲染。这个时候同样出现了⼀个问题,那就是ajax发送的请求⽅式在不同开发者之间各不相同。
  2000年,Roy Fielding 博⼠发表了的⼀篇关于软件架构风格的论⽂- Representational State Transfer(REST,即表属性状态转
移),rest服务⼀出,国内外许多知名互联⽹公司纷纷采⽤,这就形成了⼀套较为普遍的请求⽅式(后端架构模式)。
  此时前后端分离初显,达到了半分离的状态。为什么是半分离呢?此时的前端可以完成更多的HTML、CSS页⾯渲染、以及JS的动态页⾯了,但是它依然没有完成分离出后端,前后端共⽤⼀个代码库,但是代码分别存放在两个⼯程中。后端不关⼼或很少关⼼前端元素的输出情况,前端不能独⽴进⾏开发和测试,项⽬中缺乏前后端交互的测试⽤例,前端的编写进度受限于后端数据的供给,⼤⼤影响了前端开发的效率。
什么是前后端分离?
  事实上前后端分离就是⼀种架构模式,说通俗点就是后端项⽬⾥⾯看不到页⾯(HTML),后端给前端提供接⼝,前端调⽤后端提供的REST风格接⼝就⾏,前端专注写页⾯(html)和渲染(JS、CSS、各种前端框架);后端专注写后台代码就⾏。前后端分离的核⼼:后台提供数据(操作数据库,实现增删改查、提供接⼝),前端负责显⽰。
  2009年,Ryan Dahl在博客上宣布准备基于V8创建⼀个轻量级的Web服务器并提供⼀套库。2011年7⽉,Node.js在微软的⽀持下发布Windows版本。 node.js的出现,为前端提供了js版本的服务器,让前后端代码库分离,能⽀持前端的独⽴开发和测试,让前端脱离了后端的束缚。这时就由之前的B→S→DB模式转变成了B→Node.Js→S→DB模式。
为什么要引⼊node.js作为中间层?
  nodejs主要是为了分层开发,职责划分,nodejs作为前端服务器,由前端开发⼈员负责,前端开发⼈员不需要知道java后台是如何实现的,⽽后台开发⼈员也不需要考虑如何前端是如何部署的,他只需要做好⾃⼰擅长的部分,提供好API接⼝就可以。同时nodejs本⾝有着独特的异步、⾮阻塞I/O的特点,这也就意味着他特别适合I/O密集型操作,在处理并发量⽐较⼤的请求上能⼒⽐较强,因此,利⽤它来充当前端服务器,向客户端提供静态⽂件以及响应客户端的请求,是⼀个很不错的选择。
前后端分离的好处?
  为优质产品打造精益团队。通过将开发团队前后端分离化,让前后端⼯程师只需要专注于前端或后端的开发⼯作,使得前后端⼯程师实现⾃治,培养其独特的技术特性,然后构建出⼀个全栈式的精益开发团队。
  提升开发效率。前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应⽤所需接⼝以及接⼝参数,便可以开始并⾏开发,⽆需等待对⽅的开发⼯作结束。与此同时,即使需求发⽣变更,只要接⼝与数据格式不变,后端开发⼈员就不需要修改代码,只要前端进⾏变动即可。如此⼀来整个应⽤的开发效率必然会有质的提升。
  完美应对复杂多变的前端需求。如果开发团队能完成前后端分离的转型,打造优秀的前后端团队,开发独⽴化,让开发⼈员做到专注专精,开发能⼒必然会有所提升,能够完美应对各种复杂多变的前端需
求。
  增强代码可维护性。前后端分离后,应⽤的代码不再是前后端混合,只有在运⾏期才会有调⽤依赖关系。
前端跟后端哪个就业难

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。