如果是问“什么是正确的前后端分离”,我还真不敢回答,生怕自己的理解有什么偏差;但是问怎么“理解前后端分离”,那我可以结合自身的工作,谈谈我对前后端分离的理解,也欢迎大家提出不同的理解。
我07年参加工作就是做企业级项目的开发,那时候的一些项目都只有一个包,没有什么代码规范,业务逻辑散落在各处,甚至是JSP中直接访问数据库并做业务处理。
后来逐渐有了一些规范,页面就是页面,代码就是代码,很多项目开始使用Ajax框架。
发展的更进一步,后端代码有了分层,cotroller/service/dao,可能每个项目分层策略不同(三层和两层居多),每层的叫法不同(cotroller还是action),数据从页面到最后访问数据库,需要走到多个分层中。
不过到了此阶段,在企业级项目的开发过程中,Java程序员依然要兼顾前后端的开发,所以前端页面的样子嘛,达不到美观的程度,也就是能用。
前后端分离有很多的好处:前端开发和后端开发可以各司其职,约定好接口之后就可以并行开发;后端接口可以复用,如果项目同时有电脑网页端、移动网页端、APP端等多个入口的时候,后端可以只有一个;
带来好处的同时,也会有一些缺点,例如:增加了架构的复杂性,如果技术能力不足的团队,可以考虑半分离(例如我们部门都是企业级应用,都没有前端开发人员);如果是面向互联网的应用,需要搜索引擎抓取,就需要服务器端渲染;另外前后端交互的接口,也需要花时间和精力设计。