可能不少人会有误解,认为web应用的开发期进行了先后端开发工做的分工就是先后端分离。但其实先后端分离并不仅是开发模式,而是web应用的一种架构模式。在开发阶段,先后端工程师约定好数据交互接口,实现并行开发和测试;在运行阶段先后端分离模式须要对web应用进行分离部署,先后端以前使用HTTP或者其余协议进行交互请求。前端
在之前传统的网站开发中,前端通常扮演的只是切图的工做,只是简单地将UI设计师提供的原型图实现成静态的HTML页面,而具体的页面交互逻辑,好比与后台的数据交互工做等,可能都是由后台的开发人员来实现的,这也就致使了先后端工做分配不均。这样作不只仅开发效率慢,代码也难以维护。而先后端分离的话,则能够很好的解决先后端分工不均的问题,将更多的交互逻辑分配给前端来处理,然后端则能够专一于其本职工做,像提供API接口,进行权限控制以及进行运算工做。而前端开发人员则能够利用nodejs来搭建本身的本地服务器,直接在本地开发,而后经过一些插件来将api请求转发到后台,这样就能够彻底模拟线上的场景,而且与后台解耦。前端能够独立完成与用户交互的整一个过程,二者均可以同时开工,不互相依赖,开发效率更快,并且分工比较均衡。node
先后端分离大概能够从四个方面来理解:web
1.交互形式后端
在先后端分离架构中,后端只须要负责按照约定的数据格式向前端提供可调用的API服务便可。先后端之间经过HTTP请求进行交互,前端获取到数据后,进行页面的组装和渲染,最终返回给浏览器。api
2.代码组织方式浏览器
先后端代码库分离,前端代码中有能够进行Mock测试(经过构造虚拟测试对 象以简化测试环境的方法)的伪后端,能支持前端的独立开发和测试。然后端 代码中除了功能实现外,还有着详细的测试用例,以保证API的可用性,下降 集成风险。服务器
3.开发模式前端工程师
实现先后端分离架构以后,前端工程师只须要编写HTML、js、CSS等前端资源,而后通 过HTTP请求调用后端提供的服务便可。除了开发期的分离,在运行期先后端资源也 会进行分离部署。先后端分离以后,开发流程将以下图所示。架构
经过上面的流程图,不难发现,在开发模式上,先后段分离不只仅只是工程师的分工开发,更重要的意义在于实现了先后端的并行开发,简化了开发流程。app
4.数据接口规范流程
在开发期间先后端共同商定好数据接口的交互形式和数据格式。而后实现先后端的并行开发,其中前端工程师再开发完成以后能够独自进行mock测试,然后端也可使用接口测试平台进行接口自测,而后先后端一块儿进行功能联调并校验格式,最终进行自动化测试。
1. 适配性提高
咱们其实在开发过程当中,常常会给pc端、mobile、app端各自研发一套前端。其实对于这三端来讲,大部分端业务逻辑是同样的。惟一区别就是交互展示逻辑不一样。若是controller层在后端手里,后端为了这些不一样端页面展现逻辑,本身维护这些controller,徒增和前端沟通端成本。
2. 响应速度提高
咱们有时候,会遇到后端返回给前端的数据太简单了,前端须要对这些数据进行逻辑运算。那么在数据量比较小的时候,对其作运算分组等操做,并没有影响。可是当数据量大的时候,会有明显的卡顿效果。这时候,node中间层其实能够将不少这样的代码放入node层处理、也能够替后端分担一些简单的逻辑、又能够用模板引擎本身掌握前台的输出。这样作灵活度、响应度都大大提高。
3. 性能获得提高
你们应该都知道单一职责原则。从该角度来看,咱们请求一个页面,可能要响应不少看后端接口,请求变多了,天然速度就变慢了,这种现象在mobile端更加严重。采用node做为中间层,将页面所须要的多个后端数据,直接在内网阶段就拼装好,再统一返回给前端,会获得更好的性能。