一、前后端分离本质
大家往往会陷入一个误区,试图用具体的技术来描述什么是前后端分离这个一个概念,这是答非所问的。一提到前后端分离就是SpringBoot + Vue,这并不是正确的理解!
前后端分离是:软件技术和业务发展到一定程度,在项目管理工作上必须进行的一种升级,他是一个必然而不是一个偶然!说白了,就是公司部门架构的一种调整。
为什么会发生这种变化?
因为初期的软件开发其实是侧重于后端的,因为互联网初期的页面功能比较简单,只需要做数据的展示,然后提供基本的操作就可以了!所以整个项目的重点放在后台的业务逻辑处理上。但是随着业务和技术的发展,前端功能越来越复杂,变得越来越重要,同时前端的技术栈越来越丰富!这样我们在开发中遇到的问题就越来越多,解决这些问题的难度就越来越大,这时我们发现前端开发不能像以前那样零散的分布在整个系统架构当中了。前端也应该像后端那样,实现工程化、模块化、系统化。
如何做到这一点呢?
就是成立专门的前端部门,把原本跟后端程序员混合在一起的前端开发统一集中起来,形成纯粹的前端部门。专门去研究开发工程化的前端技术,迭代升级新的技术体系,以解决项目中的问题、适应技术的发展。所以一句话总结:为了适应技术和业务发展的需求。前端开发需要从之前前后端混合在一起的组织架构当中分离出来,形成独立的前端部门和后端部门,这就是前后端分离产生的原因
二、不使用前后端分离的缺点
前后端分离是目前热门的开发方式,大部分互联网都会采用前后端分离的方式开发!
前后端分离就是一个应用的前端代码和后端代码分开写
传统的Java Web开发过程中,JSP不是由后端开发者来独立完成的
前端开发——>HTML静态页面——>后端开发——>JSP
前端会把页面做出来,我们后端需要开发,就把前端页面嵌入到JSP中,或者使用其他的Thymeleaf模板也是同理的!也需要添加标签才能把数据整合起来。因为核心就是:如何把我们后端返回的数据添加到页面中,无论是JSP还是Thymeleaf模板都一样!
如果此时后端页面中遇到一些问题,我们把JSP发给前端开发,前端开发人员看不懂JSP。此时前端也不好解决,后端也不好解决。这样沟通和开发效率非常低!前后端耦合度太高,开发起来太麻烦!
解决方式很简单:就是使用前后端分离的方式进行开发!
前端只需要独立编写客户端代码,后端也只需要独立编写服务端代码提供数据接口即可
前端通过AJAX请求来访问后端的数据接口,将Model展示到View中即可
前后端开发者只需要提前约定好接口文档(URL、参数、数据类型…),然后分别独立开发即可
前端可以造假数据进行测试,完全不需要依赖于后端,最后完成前后端集成即可
真正实现了前后端应用的解耦合!极大提升开发效率
单体——> 前端应用 + 后端应用
前端应用:负责数据展示和用户交互
后端应用:负责提供数据处理接口
前端HTML——>Ajax——>RestFul后端数据接口
三、传统单体与前后端分离图示
1.传统单体结构
2.前后端分离结构
总结:前后端分离就是将一个单体应用拆分成两个独立的应用:前端应用和后端应用,以JSON格式进行数据交互