什么是前后端分离

一个正常的软件开发可以简化成四大步:设计、开发、测试、部署,所以真正的前后端分离应该渗透到每个步骤中去。

第一个阶段:设计阶段

设计的第一个层面当然是系统设计:后端系统设计较好理解,主要是系统架构、数据库、中间件、缓存等,主要考虑性能、容量、扩展性、维护性;那前端也应如此,假如网站非常复杂,页面极其多,这时前端项目架构也需要做好规划,尽量满足长期演进、可迭代的目标。

设计的第二个层面就是接口设计:前后端系统通过接口进行交互,这时模型( Model)层面的接口约定极其重要,包括:接口请求方式、数据类型、数据格式等。开发前,前后端双方评审到位,都认可之后方可进行下一步开发,否则未来在开发过程中,前、后端开发工程师永远在为了某个破接口扯来扯去!

第二个阶段:开发阶段

各自按照事先评审好的接口独立开发,互相无需扯皮。

现如今,前端在诸如 Vue、 React等当下火热的组件化框架的加持下,的确可以独立驱动页面,数据则从事先规划好的 Mock服务器去拿,完全不依赖于后端。

后端则只需要把接口写好,按照先前评审好的约定提供数据。不管后端用Java的 SpringBoot,PHP的 Laravel,亦或是Python的 Django、 Flask,这些都跟前端没关系。而且后端一套接口可以提供给多种类型的前端使用,譬如:Web网页、手机APP、微信小程序等等。

第三个阶段:测试阶段

基本上要保证的是,前后端独立可测试。前端主要就是页面、跳转、展示、输入、传参、响应数据的展示等;后端主要则考察数据格式、校验、异常情况、数据一致性甚至一些权限问题。

最后一个阶段:上线部署

前后端项目独立部署,这个很关键!在以前的JSP模板时代,前端的html页面、css样式、js效果均由后台来驱动。那个时候所谓的项目部署上线,其实指的也就是后端项目的部署,前端“所谓的”发版本,还是得求着后端来做的。

前后端分离后责任就清晰了,前端项目单独部署。前后端发布上线完全独立,双方可以按照各自的版本规划来发布版本,前端发版本不再受后端约束,后端发版本前端也可以不知道,互相透明了。

还有一个必须提的就是,很多公司里,后端项目都是通过诸如 Jenkins等 CI系统去做持续发布,一键部署,同理前端项目也应该拥有自己的CI系统。

这玩意真那么邪乎?

最后一个问题: 前后端分离吹得这么邪乎,它真的就没有缺点吗?

这个问题就要回归文章开始的讨论了,即:为什么会有前后端分离这件事情的出现。

怕就怕很多公司为了前后端分离而做前后端分离。前后端分离需要成本!尤其当你想做一个彻彻底底的前后端分离,不管是人力成本、开发成本、工具成本、还是部署成本,都是不小的。

不顾实际需求,强行前后端分离开发只会带来麻烦,因为只要落地过程中某一步做得不彻底,就会带来很多负担!毕竟并不是所有项目都适合前后端分离!

还是那句话,前后端分离与否,它本身不是一个技术问题,而是一个项目管理的问题!

总的来说,前后端分离就是为了解耦,为了项目管理,为了前端也能可以独立测试,各自分工明确。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值