在面试时被问到为什么要前后端分离时该怎么回答?
- 1、前后端分离的原因
从本质上来看前后端分离本身并不是一个技术问题,而是一个工程化考量和项目管理的问题。在早些年的时候,Web化趋势还不是那么明显,JSP可以应付大多数的业务场景,但是随着整个社会信息化程度的加深,以及各种各样的服务都Web化以后,前端的页面开始变得复杂起来,JSP这种前后端高耦合的技术就不是那么的好用了。其本质的原因,是因为前端并没有像后端一样,工程化、模块化和可复用化的思维来做。所以项目管理者就开始对项目进行解耦。
- 2、什么是解耦
解耦本身的概念是降低事务之间的耦合度,耦合度则是指事务与事务之间的关联性程度。在软件行业里,解耦往往代表着降低软件逻辑之间的依赖性,其中的代表就是spring的IOC。一般在软件行业看到解耦的概念,就可以认为是降低依赖性,使得整体的逻辑层次更加清晰这个概念。清晰的逻辑分层有助于代码工程的开发,对于程序员的自我修养以及代码的维护很有帮助。
- 3、怎么做前后端分离
把前端开发工作从后端中分离出来,让前端开发工程化、组件化。那么该怎么做才算是优雅的前后端分离呢?在一个正常的软件开发周期中,简化的来讲应该分为四大步:设计、开发、测试和部署。而真正的前后端分离就应该渗透到这四个步骤中的每一个步骤中去。
- 3.1、设计阶段
系统设计:
前端:做好充分的规划和准备,一定要满足长期可演进、可迭代的目标
后端:后端架构、系统架构设计、数据库、中间件、缓存等等,主要考虑性能、容量、扩展性和可维护性
接口设计:
前后端定义好模型层面的接口约定,包括接口的请求方式、数据类型和数据的格式等等
- 3.2、开发阶段:
前后端按照设计阶段定义好的接口独立开发,前端数据可以从事先规划好的mock服务器中获取,数据是完全模拟的,完全不需要依赖后端的接口。后端只需要把接口写好,按照之前的接口约定来提供数据即可
- 3.3、测试阶段:
在测试阶段要保证前后端独立可测试,前端主要是页面、跳转、展示、输入、传参以及响应数据的展示等等。后端主要保证数据接口的提供,如数据格式、校验、异常情况、数据的一致性问题以及权限问题等等。
- 3.4、系统部署阶段:
在部署阶段,前后端分离最重要的就是前后端项目独立可部署。
- 4、前后端分离这么火的原因
前后端的分离解决了一个问题,那就是静态资源(页面)和动态资源(数据接口)的分离,以前的JSP因为是直接把数据嵌入页面的,导致页面资源也是动态的,这样子会导致服务器性能的下降。而在进行前后端分离之后,静态资源是进入到缓存当中,这样可以有效的降低服务器的负载,提升服务器性能。