总结:
非前后端分离项目架构:
1,JSP+sevlet
这种架构JSP中有Java代码强侵入。
2,JSP+Spring
分层次(MVC)架构,JSP保留部分Java标签。
3,springboot + 模板
spring脚手架,第二种的变种。
前后端分离项目架构:
1,Vue + springboot(前端项目+后台接口)
前端负责:
1,页面显示,交互处理(职责)。
2,基于功能的层次结构划分(模块)。
后端负责:
1,接口定义,业务处理(职责)。
2,中小企业:先按结构分层(MVC)+模块(业务);大型企业:先业务模块,在结构。
为什么分离?
1,结构区分,大型项目可以前端和后端一起开发,缩短了项目交付时间。
2,专业性,前端更加关注页面;后端关注逻辑,数据。
3,生态,前端强大的生态系统,可以更加好的实现页面展示。后端亦如此。
4,后端服务器压力减小,很多校验业务可以在前端实现。
5,前端强大的组件库,更容易跨平台
详细介绍:
非前后端分离项目架构:
1,JSP+sevlet
这种架构JSP中有Java代码强侵入。
JSP页面:负责视图层的渲染及交互,内部可以嵌入java 代码,在某些场景下开发起来比较方便,但是这种页面和
java代码混合开发的方式造成逻辑不够直观,项目代码维护起来困难。
Servlet类: 负责接收from表单提交的参数,进行业务层逻辑和页面导航的处理。但是这种方式需要区分请求的方式
,手动把请求的参数拿出来进行封装。基本上一个请求对应一个servlet,需要在web.xml文件中配置urL映射或者注
解的方式。
2,JSP+Spring
分层次(MVC)架构,JSP保留部分Java标签。
jsp + spring mvc开发模式:spring 框架流行起来后,着重关注的是分层设计,即MVC的概念,个人认为jsp+spring
带来的最大好处是简化了之前servlet时代编写web流程的复杂度,各种注解、各种参数自动注入极大提高了java web
的开发效率,此时对Jsp页面有一个共同的约束,即JSP页面不要在嵌入除标签外的java代码,这样初步把视图层抽出
来。但是这种方式的约束性依然很大,即应用强依赖于java生态。
3,springboot + 模板
spring boot是spirng的一个脚手架,能够快速搭建spring项目,使用默认配置减少开发者手动的配置,与第三发包
的各种整。模板相对于jsp页面来说,进一步进行视图层的模块化,即可以按照页面的结构进行划分,常用的例如
Header,footer,Silder Menu, Center Conter这样的版块接口进行划分,把页面进行分片处理,提高代码的复用度。
前后端分离项目架构:
1,Vue + springboot(前端项目+后台接口)
为什么分离?
1,结构区分,大型项目可以前端和后端一起开发,缩短了项目交付时间。
2,专业性,前端更加关注页面;后端关注逻辑,数据。
3,生态,前端强大的生态系统,可以更加好的实现页面展示。后端亦如此。
4,后端服务器压力减小,很多校验业务可以在前端实现。
5,前端强大的组件库,更容易跨平台
缺点:
1,沟通成本增加,接口定义等
2,对于小项目划分前后端,结构更加负责,人力成本增加(2套服务,运维,硬件等)
如何分离?
职责划分:当从非前后端分离的项目转到前后端分离的项目,如何确认分离的切入点?
首选需要理解前后端的职责,即前端负责页面构建和交互处理,后端负责接口定义和业务处理。
所有页面上能看到的功能基本都是前端的,所有涉及数据的查询、保存都是后端的,
前端不需要关心数据的输入和输出,而关注数据在这个过程中的交互逻辑;
后端需要关心页面如何渲染和交互,而关注输出数据和接收数据。从上面可以看出职责即是功能的划分。
模块划分:前后端模块划分关注点不同。后端模块划分时一般有两种方式,第一种是先分层,再按照模块划分。
即先按照全局、工具、控制层、服务层、数据操作层等这种基于MVC的结构进行划分,
然后再将控制层、服务层、数据操作层按照业务模块进行划分。第二种方式按先模块后结构进行划分,
即先按照业务模块划分不同的结构,然后每个模块根据需要决定是否进行MVC结构的划分。
一种更适用于中小型项目的构建,第二种更适用于大型项目,能够对按照业务垂直划分结构,方便部署和扩展。
前端模块划分基本基于功能的层次结构。第一层一般是全局配置、静态资源、工具类、视图、组件并列的结构,第二
层是组件的复合结构和视图的复合结构,第三层是组件的独立结构。
前端负责:
1,页面显示,交互处理(职责)。
2,基于功能的层次结构划分(模块)。
后端负责:
1,接口定义,业务处理(职责)。
2,中小企业:先按结构分层(MVC)+模块(业务);大型企业:先业务模块,在结构。