jsp、servlet➕SpringBoot这样的前后端耦合在一起的开发实在太难熬了!如果同一个应用,每新开发一个平台都要重新写业务逻辑,那也太费事儿了8⃣️。
于是我发现只需在新的平台上开发UI界面,然后共用一套后端接口,那么代码的开发就变的优雅了起来。
前后端分离主要不是使用什么样的技术,而是为什么要前后端分离。
[TOC]
基于JSP的Java web
JSP(Java Server Pages),是一种服务端的网页模版技术,支持JSTL标准标签库,在传统HTML页面中插入可以在页面中执行的Java代码段。JSP是互联网开发中比较老的技术,以现在的技术来审视JSP不难发现JSP是一个高耦合性的东西。
JSP技术
什么叫服务端的网页模版技术呢?常见的网页是由样式➕数据构成的,当我们把数据全部去掉,就剩一个网页的架子,即网页模版。
JSP网页是如何开发的?
前端工程师写好HTML,CSS,js动态效果等
后端工程师写好后端逻辑,Servlet,数据库操作等等
这个时候前后端如何联系呢?
前端工程师把写好了的HTML页面交个后端工程师,这个时候页面是写死的,后端工程师需要把HTML换成JSP,然后写一些JSP标签或者Java代码把需要动态显示的数据添加到JSP页面中去。
这时候前后端就有很强的依赖。需要后端工程师懂一些HTML,css之类的语法,也需要前端工程师懂的一些Java的语法。
前后端分离的Java web
前后端之间通过约定接口,数据样式,参数格式来进行开发。
前后端可以并行开发,前后端单独部署。前端只从后端那数据,页面渲染工作只交给前端服务器进行。静态资源也不再由后端完成。后端只需要提供数据接口,接收到请求之后跟数据沟通就可以了。
为什么要进行前后端分离呢?
在以前JSP模版开发的时候,前后端耦合在一起做,套模版的操作比比皆是。
原因是这样的:这里引用CodeSheep的话来说:前端开发没有像后端这样工程化,模块化和可复用化的开发思维。
所以前后端分离的原因是前后端的工作分来开做。把前端工程师的工作从后端工程师身上拿掉,也让前端工程师不再参与后端工程师的活儿。让前端工程是也需要工程化项目化的思维来做。这样看来,前后端分离不是一个技术问题,而是一个工程化考量和项目管理的问题。
技术上问题怎么解决呢
前端慢慢出现了vue.js, react.js等等的前端组件化开发框架。随着node的出现,前端开发也借助node来开发各种各样的工具,比如npm包管理器,预编译工具等等。
前后端分离的实施
一个标准的软件开发生命周期为例,分为需求分析,系统分析与设计,系统实现,测试和维护。
真正的前后端分离应该渗透到以上的每一个步骤。
需求分析之后,前后端根据需求来约定接口,之后就可以各干各的了。
前端负责开发UI页面,所有的数据也可以通过Mock服务器来模拟,并不需要实时的后端接口。
后端负责考量系统的设计,比如系统架构中的数据库,中间件,缓存,分布式架构等。主要考虑性能、容量、可扩展性、可维护性等等。然后实现接口来为前端提供数据即可。
前后端项目独立部署,不需要迁就某一方面。
以上就是我认识的前后端分离,能力有限,一点浅见拙识

