以Java Web项目为例浅谈前后端分离开发模式

作者:Cloud-Future 时间:2023-02-14 23:00:42 

为什么要前后端分离?

以Java Web项目为例,在传统的开发模式中,前端代码(Html、js、css)写在JSP中,甚至JSP中嵌入Java代码。当用户访问网站时,页面数据也就是Html文档,由Servlet容器将jsp编译成Servlet,然后将jsp中的html,css,js代码输出到浏览器,这个过程需要经过很多步骤,才能响应用户的请求。这个过程非常繁琐,效率低下,直接造成了页面响应速度慢的效果。从项目维护的角度上,传统的开发模式,前端代码和后端代码耦合在一起,导致代码混乱不堪,极大的降低了项目的可维护性,增加了维护成本。从开发角度来看,研发人员在开发过程中,不仅要设计后端架构还要兼顾前端展示,导致开发效率低下,延长开发周期。扬长避短,为什么不让专业的人去做专业的事?

传统的开发模式下的系统数据交互图:

以Java Web项目为例浅谈前后端分离开发模式

传统开发模式的劣势和不足:

  • 开发出的软件响应速度慢,质量差,用户体现差。

  • 前后端严重耦合,代码混乱,可维护性差。

  • 研发人员前后端兼顾,开发效率低下,研发周期变长。

为了解决传统开发模式中的这些病痛,前后端分离框架应用而生。

什么是前后端分离?

在前后端分离的开发模式中,后端仅返回前端所需的数据,前端负责渲染HTML页面,后端不再控制前端的效果,用户看到什么样的效果,从后端请求的数据如何加载到前端中,都由前端自己决定,后端仅仅需要提供一套逻辑对外提供数据即可,并且前端与后端的耦合度相对较低,在这种模式中,我们通常将后端开发的每个视图都成为一个接口,或者API,前端通过访问接口来对数据进行增删改查。总结一句话,后台负责提供数据,前端负责数据展示,职责分离,分工明确。

对应的数据交互如下图:

以Java Web项目为例浅谈前后端分离开发模式

前后端分离的优缺点?

为优质产品打造精益团队:

术业有专攻,通过前后端分离,让前后端工程师只需要专注于前端或者后端的开发工作,有利于编写出高质量的代码,培养开发工程师独特的技术特性,然后构建出一个全栈式的精益开发团队。

提高工作效率,分工更加明确:

前后端分离的工作流程可以使得前端专心前端,后端关心后端,两者开发同时进行,提高开发效率,页面的增加和路由的修改也不必再去麻烦后端,开发更加灵活。

降低服务器负载,系统性能提升:

通过前端路由的配置,我们可以实现页面的按需加载,无需一开始加载首页便加载网站的所有资源,服务器也不再需要解析前端页面,在页面交互及用户体验上有所提升。

增强代码的可维护性

前后端分离后,应用的代码不再是前后端混合,只有在运行期才会调用依赖关系,并且分层明确,应用代码变得整洁清晰。

对于你们的团队和产品有没有必要前后端分离?

要回答这个问题,需要从团队人员分配、人力资源和研发技能储备这三个方面出发,进行探讨决定。 如果团队人员比较少、人力资源不足,项目不大我觉得没必要前后端分离。

来源:https://blog.csdn.net/gybshen/article/details/91594272

标签:Java,Web,前端,后端,分离
0
投稿

猜你喜欢

  • 详解Android.activity销毁流程的工作原理

    2021-11-17 19:12:35
  • C#实现TCP连接信息统计的方法

    2022-12-04 16:31:46
  • 详解如何在C#中接受或拒绝Excel中的修订

    2023-06-19 21:08:29
  • Java多线程yield心得分享

    2023-11-29 05:58:15
  • Gradle进阶使用结合Sonarqube进行代码审查的方法

    2021-12-17 08:49:56
  • Flutter加载图片流程MultiFrameImageStreamCompleter解析

    2023-07-19 02:45:55
  • C++编写实现图书管理系统

    2022-03-05 09:51:00
  • C#实现下载网页HTML源码的方法

    2023-06-10 01:07:24
  • C#中Clone一个对象的值到另一个对象案例

    2022-10-11 21:41:14
  • Spring数据访问模板化方法

    2022-03-15 06:23:02
  • Mybatis Select Count(*)的返回值类型介绍

    2022-06-17 12:51:19
  • Java C++ 算法题解leetcode145商品折扣后最终价格单调栈

    2023-09-16 23:29:42
  • Java+Nginx实现POP、IMAP、SMTP邮箱代理服务

    2023-11-26 10:31:47
  • 利用Java如何获取Mybatis动态生成的sql接口实现

    2021-05-25 13:05:27
  • java文件处理工具类详解

    2022-12-19 22:49:59
  • Android使用SoundPool播放音效

    2021-11-24 02:32:36
  • C#实现顺序表(线性表)完整实例

    2022-06-04 15:42:31
  • 深入理解java final不可变性

    2023-02-11 20:17:27
  • springboot整合shiro多验证登录功能的实现(账号密码登录和使用手机验证码登录)

    2023-05-25 18:53:29
  • 详解SpringBoot构建的Web项目如何在服务端校验表单输入

    2021-08-22 23:51:59
  • asp之家 软件编程 m.aspxhome.com