前后端分离小记

1,979 阅读4分钟

概述

前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、微服务架构、多端化服务(例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。

核心思想

前端HTML页面通过AJAX调用后端的RESTFULAPI接口并使用JSON数据进行交互(撕逼大战正式拉开帷幕)

前后端痛苦的开始

前端: 为什么接口文档永远都是不对的?为什么接口会频繁变动? ** 你个 **

后端: 老改需求,我写业务这么忙,哪有时间写文档?谁爱** 写谁 ** 写

传统思维公司,前后端正式开战

现在很多传统公司或者小厂慢慢开始往前后端分离路线走,而多数这种类型公司的技术研发老大都是后端人员担任的,那么很容易导致以上的问题。从而导致的就是开发进度缓慢,交付延后,前后端经常性撕逼,整个团队氛围都会变得很差。

存在的问题

前后端分离确实是进行了有效的解藕,降低了维护的成本,但是人员沟通成本也随之提高。

  1. 序员天生抗拒写文档,所以经常出现文档字段说明不详细(遇到牛逼的理由是看英文单词就知道什么意思啊),接口废弃但是前端仍然在使用的情况。
  2. 人的天生惰性,联调前端调用后端接口,测试接口都交给前端,后端写完就不管了。
  3. 业务处理的前后端分工不明确,前后端分离并不是表示将后端人员只sql 查完数据不做任何处理就完全交给前端,不考虑过浏览器的处理能力、带宽限制、安全性因素(业务的拓展以及维护)
  4. 后端工作量大导致开发前期,前端只能做静态页面,中期一直在等后端出文档。
  5. 人员离职后没有对应文档和注释没有办法立即展开有效的工资

解决方案

解决问题方案是定义json 以及编写及时文档!

  1. 现有很多在线api 工具,可以实现实时测试,接口在线编写。 例如:

    YApi github.com/YMFE/yapi

    eolinker www.eolinker.com/

  2. 编写需求文档!需求文档并不是交付给甲方爸爸的作业,而是在开发过程中前后端用来降低交流成本的利器,甚至实现无沟通开发。 每个人都无法避免知识的诅咒,如果仅仅用口述的方式来讲解,很容易造成你觉得你讲的很明白,对方一脸懵逼状态,那么形成文字的东西很容易让双方理解需求并进行开发了。(如果说编写文档成本很高的话,那么前后端撕逼起来半天可能都不写码你就能接受?) 工具:

    teambition www.teambition.com/agile

  3. 提高接口设计能力以及json 定义能力。(json 结构还写不对, ** 你个 **), 项目开始切忌立马开始编码,而是应该理解业务需求,设计可插拔可扩展的程序,业务的变更是在所难免的,那么设计能力的重要性就体现出来了。 前期可能在架构设计上会耗费很多心智和时间,但是在后期业务变更的时候,就会感觉很轻松很惬意。 真香^_^!

总结经验

从经典的JSP+Servlet+JavaBean的MVC时代, 到SSM(Spring + SpringMVC + Mybatis)和SSH(Spring + Struts + Hibernate)的Java 框架时代, 再到前端框架(AngularJS、vueJS、ReactJS)为主的MVVM时代,然后是Nodejs引领的全栈时代,技术和架构一直都在进步。创新之路不会止步,无论是前后端分离模式还是其他模式,都是为了更方便得解决需求,但它们都只是一个“中转站”。前端项目与后端项目是两个项目,放在两个不同的服务器,需要独立部署,两个不同的工程,两个不同的代码库,不同的开发人员。前端只需要关注页面的样式与动态数据的解析及渲染,而后端专注于具体业务逻辑。