对于前后端分离该怎样理解?
不能把对前后端分离的理解拘束在某个具体的框架或者技术中,这样会太过于局限。
以前,后端开发相较于前端更有牌面,很多公司没有前端工程师这个职位,前端的工作都由后端来做,例如JSP就是一个前后端耦合的技术,需要不停的套模板。现在很多的服务都开始web化,那么前端需要展示的东西就变得越来越而复杂,这种时候JSP这种套模板的技术就没有办法高效开发。在本质上,前端当时没有像Spring这样对于后端有着工程化,模式化的思想。所以出现了很多效率低下的问题,前端工作变得越来越繁复,所以需要前后端的分离。前端也需要工程化模式化的去做,从本质上来看前后端分离不是一个技术问题,而是一个工程化的考量和一个项目管理的问题,前端开发十分的繁琐,不停的复制粘贴,东拼西凑,不像Java那样便于管理,所以像Vue.js和React,js这些前端框架的出现本质上改变了前端开发,所以我们管这些框架叫:前端开发工程性框架,至此前端开发才变得有章可循。
前后端分离该怎样实施?
在开发的四大步中,设计、开发、测试、部署,前后端分离应该渗透到每一步中。
第一个阶段设计阶段:第一个层面是系统设计阶段,后端开发比较好理解,包括系统架构设计,数据库,中间件,缓存等,考虑容量,扩展性,可维护性等问题。前端也应该如此,前端的页面很多很复杂,前端的项目架构应该做好充足的准备,一定要满足长期性可演变可进化的目标。
第二个层面是接口设计,前后端分离后通过接口交互,模型层面的接口十分重要,例如数据类型、数据格式等,前后端工程师很容易在某个接口扯不清楚,所以事先一定要约定好。
第二个阶段开发阶段,按照约定的接口独立的开发,否则总有一方会去被动妥协的去改东西,前端现在在诸如Vue和React等组件化框架的帮助下可以独立的开发,后端吧接口写好,按照约定的接口来提供数据,有的时候在约定好后,后端的一套接口可以提供很多类型的前端使用,Web、App、H5页面等都可以使用。
第三个阶段测试阶段,保证前后端可独立测试,前端页面跳转和展示,输入等测试,后端保证数据接口的提供,数据格式的校验,异常情况,数据一致性,权限等问题。
第四个阶段部署阶段,前后端可独立部署,前后端分离后前端项目可独立部署,双方按照各自的规划发布版本,前端不再受后端的约束。
很多公司是为了前后端分离而分离,这样是不对的,前端分离也需要成本,尤其是彻底的前后端分离成本巨大,人力,开发,设备等都需要成本,前后端开发不适应所有项目,要看项目的性价比。