前后端开发职责

问题

前端同学和我在讨论什么功能应该放在后端完成,什么工作应该放在前端完成。

想法

  • 传统的开发模式是后端负责业务逻辑,然后通过模板填充数据的方式返回html给前端显示,前端就只要负责样式设计即可。这种模式的缺点是后端太重,既要负责业务,又要负责显示,前端样式改了,后端也要跟着改,整体效率低下。
  • 随之产生的是前后端分离开发模式,即MVC,目的是解决后端负责数据和业务,前端负责显示,通过Controller进行衔接。但是同样有个问题,即Controller的工作范围,如果和以往一样,controller负责将所有业务数据封装完成,View就是简单的显示数据,这样的好处相比原有的模式只是在于后端不用知道前端样式,只负责返回数据,而模板渲染的工作放到了前端。
  • 那是不是前端就只是负责显示数据?我觉得不应该这样的,前端也是应该有相应的业务逻辑存在的。那哪些业务逻辑应该放在前端,哪些必须放在后端,其实很难定义。有些业务必须放在后端,比如数据校验,安全分析,权限控制这些是要放在后端。但是有些业务是两边都可以做的,比如菜单栏显示,菜单栏里面的数据如果是固定的,那这个数据应该维护在前端还是后端,其实前后端都可以。

解决

我觉得针对这个问题我的思路是两点

  • 从整体最优的角度去思考问题,从开发成本,维护成本角度看,放在哪里是最优的。
  • 前后端开发语言的特点考虑,前端出现的优势就是快速开发,相比后端java,js更加轻,开发效率更高,所以我个人建议是将一些独立的业务逻辑移到前端,而不是放在后端。而后端java的优势在于性能,安全,强大的框架以及各种成熟的中间件,所以相对复杂的业务流程需要放到后端。

结论

  • 后端注重数据,前端注重展示,有时候边界不是特别清晰,需要从整体考虑收益,而不是单从前端或者后端角度考虑问题。