一、前后端分离的基本概念
前端后端交互,基本上是基于http+json的形式。后端专注于提供数据,更重要职责是维护系统架构的稳定,保证数据的安全。前端人员专注于交互,快速响应UI的变化。
双方交互基于http+json接口,后端人员基本只对接口负责,无需负责js和html的代码。前端人员只对界面展示交互负责,对于后端http接口如何提供正确的数据无需负责。
前后端分离的主要概念就是:后台只需提供API接口,前端调用AJAX实现数据呈现。
二:前后端分离的意义
1:彻底解放前端,前端不再需要向后台提供模板或是后台在前端html中嵌入后台代码
2:提高工作效率,分工更加明确,前后端分离的工作流程可以使前端只关注前端的事,后台只关心后台的活,两者开发可以同时进行,在后台还没有时间提供接口的时候,前端可以先将数据写死或者调用本地的json文件即可,页面的增加和路由的修改也不必再去麻烦后台,开发更加灵活。
3:局部性能提升,通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有的资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。
4:降低维护成本,通过目前主流的前端MVC框架,我们可以非常快速的定位及发现问题的所在,客户端的问题不再需要后台人员参与及调试,代码重构及可维护性增强。
5、有利于产品的组件化,由于前后端分离,有利于迅速二次开发推出新产品。
6、减少后端新人上手项目的难度,提高产品的可维护性和可拓展性。
7、基于原有后端接口,有利于后期在安卓,ios,微信等其他不同平台进行产品二次开发。
三:实现分离的基本合作思路
1、评审阶段:产品经理与前后端进行需求评审,各自理解清楚自己的业务量以及联调的工作量,评估开发时间。
2、开发准备阶段:前后端一起商量需求中需要联调的部分,进行接口的口头协议交流。
3、接口定义阶段:前后端一方中,前后端中的一方根据之前的口头协议拟定出一份详细的接口,并编写服务接口定义,完成后由另一方确认。有疑问的地方重新商量直至双方都没有问题。
4、开发阶段:双方根据协商出来的接口为基础进行开发,如在开发过程中发现需要新增或删除一些字段,重复步骤3。
(注意:前端在开发过程中记得跟进接口,mock数据进行本地测试,后端修改接口需要跟前端协商清楚再改。 )
5、联调阶段:双方独自的工作完成,开始前后端联调,如在联调过程发现有疑问,重复步骤3,直至联调完成。
6、提测阶段:将完成的需求提给测试人员,让其对该需求进行测试,如发现问题,及时通知开发并让其修改,直至需求没有bug。
7、发布阶段:前后端双方在保证步骤1-5都没有问题了,进行各自的代码发布,完成后由测试人员在线上进行相应的测试,如果有bug,重复步骤6和7,直至成功上线。
四:相关问题及解决建议
1、前后端分离会带来前后端沟通成本的问题,相比不分离,能减少开发的总时间吗?
能减少开发的总时间,理由如下:
(1)、基于对接口负责的原则,前后端分离后,只需做好各种熟悉领域的事情。
后端专注于提供数据,更重要职责是维护系统架构的稳定,保证数据的安全。
前端人员专注于交互,快速响应UI的变化。
(2)、前后端分离确实会带来沟通成本的问题,这方面需要前后端遵守合作流程,适应新的合作模式,可以提高沟通效率。总体而言,利大于弊。
2、接口定义阶段,接口谁定?
回答:建议后端开发人员定,需要前端人员评审。
3、联调阶段,前端是基于后端的开发人员的机器联调,还是基于后端一个开发公共环境联调?
回答:前端应该基于后端的一个公共开发环境联调,理由如下:
(1)、开发过程中,后端开发人员机器环境不稳定,后端人员在调速中会时不时进行断点调试,重启机器的服务器。
(2)、公共开发环境由开发人员负责更新程序,并需要在更新程序前把代码提交代码仓库,这样有利于前端有一个实时更新,稳定的调试环境。
网友评论