前后端分离的优势是什么?

前后端不分离:

在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。 这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,二仅仅时数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App,后端还需要再开发一套接口。

前后端分离

在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果,至于前端用户看到的什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App由App的处理方式,但如论那种前端,所需要的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。前后端分开的应用模式中,前端与后端的耦合度相对较低。在前后端分离的应用模式中,我们通常将后端开发的每一个视图都称为一个接口,或者API,前端通过访问接口来对数据进行增删改查。

1、开发人员分离

以前的JavaWeb项目大多时后端做,既搞前端,又搞后端。后来越来越多的公司开始吧前后端的界限分的越来越明确,前端工程师只搞前端的事,后端工程师只搞后端的事。

1)后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等。

2)对于前端工程师:

把精力放在html5,css3,jquery,angliarjs,bootstrap、reactjs,vuejs,微博pack,less/sass,gulp,nodejs,Google V8引擎,javascripts多线程,模块化,面向对象编程,设计模式,浏览器兼容性,性能优化等。

前端追求的是:页面表现,速度流畅,兼容性,用户体验

2、开发模式(后端以JAVA为例)

以前的方式:

1)产品经理/领导/客户提出需求

2)UI做出设计图

3)前端工程师做HTML页面

4)后端工程师将HTML页面套成jsp页面(前后端强依赖,后端必须要等前端的HTML做好才能套jsp。如果html发生变更,就更痛了,开发效率低)

5)集成出现问题

6)前端返工

7)后端返工

8)二次集成

9)集成成功

10)交付

新的方式是:

1)产品经理/领导/客户提出需求

2)UI做出设计图

3)前后端约定接口&数据&参数

4)前后端并行开发(无强依赖,可前后端并行开发,如果需求变更,只要接口&参数不变,就不用两边都改代码,开发效率高)

5)前后端集成

6)前端页面调整

7)集成成功

8)交付

3、请求方式

以前老的方式:

1)客户端请求

2)服务端的servlet或controller接收请求(后端控制路由与渲染页面,整个项目开发的权重大部分在后端)

3)调整service,dao代码完成业务逻辑

4)返回jsp

5)jsp展现一些动态的代码

新的老的方式:

1)浏览器发送请求

2)直接到达html页面(前端控制路由与渲染页面,整个项目开发的权重前移)

3)html页面负责调用服务端接口产生数据(通过ajax等等,后台返回json格式数据,json数据格式因为简洁高效而取代xml)

4)填充html,展现动态效果,在页面上进行解析并操作DOM。

4、前后端分离的优势

1)可以实现真正的前后端解耦,前端服务器使用nginx,前端/web服务器放的是css,js,图片等一系列静态资源(甚至你可以将css,教js,图片等资源放在特定的文件服务器,例如阿里云的oss,并使用cdn加速),前端服务器腹足鳄控制页面引用&跳转&路由,前端页面异步调用后端的接口,后端/应用服务器使用toomcat(把tomcat想象成一个数据提供者),加快整体响应速度。(这里需要使用一些前端工程化的框架,比如nodejs,react,router,redux,webpack)

2)发生bug,可以快速定位是谁的问题,不会出现互相踢皮球的现象。页面逻辑,跳转错误,浏览器兼容性问题,脚本问题,页面样式问题,全部由前端工程师负责。接口数据出错,数据没有提交成功,应答超时等问题,全部由后端工程师来解决。双方互不干扰。

3)在大并发情况下,可以同时水平扩展前后端服务器

4)减少后端服务器的兵法/负载压力。处理接口以外的其他所有http轻轻全部转移到前端nginx上,接口的请求调用tomcat,参考nginx反响带来tomcat。且除了第一次页面请求外,浏览器会大量调用本地缓存

5)即使后端服务暂时超时,前端页面也会正常访问,只是数据刷不出来。

6)页面显示的东西再多也不怕,因为是异步加载

7)nginx支持页面热部署,不用重启服务器,前端升级更无缝。

8)增加代码的维护性&易读性(前后端耦合在一起的代码读起来相当费劲)

9)提升开发效率,因为可以前后端并行开发,而不是像以前的强依赖。

10)在nginx中部署证书,外网使用https访问,并且只开放443和80端口,其他端口一律关闭(防止黑客口扫描),内网使用http,性能和安全都有保障。

11)前端使用大量的组件代码得以复用,组件化,提升开发效率。

前后端分离的优势是什么?相关推荐

  1. 前后端分离架构一直没机会实战?1周完成Vue+Core WebApi移动商城实战(含源码)!...

    疫情让企业受到重创! 就业形势更加严峻! 前后端分离架构成了当下最高频的招聘需求 还没实战过前后端分离? 花3分钟阅读本文, 带你全面了解前后端分离,轻松面试拿高薪! Web发展至今技术非常成熟,主流 ...

  2. 原创 - 前后端分离,以及前端的一些操作

    前后端分离 可以让我们的代码变得更加清晰以及效率变高 这个概念已经很早就出现了,只不过最近几年才使用的比较普遍了, 作为一名前端开发人员,我们应该尝试一些新颖的技术,完善每一个细节性的问题,不断突破自 ...

  3. 关于前后端分离的概念,作用,优缺点

    前端概念 前端是一切直接与用户交互的页面或软件(用户看得见.摸得着)的统称,比如各种网站网页.andorid 手机各种 App.苹果手机各种 app.微信小程序.网络游戏客户端等.所以,普通人使用计算 ...

  4. 简单了解前后端分离架构(MVVM)

    JavaWeb 项目前后端分离架构 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式有效解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构.多端 ...

  5. 前后端分离架构,MVVM

    前后端分离架构 ​ 前后端分离已经成为互联网项目业界开发的标准使用方式,通过nginx+tomact的方式有效进行解耦,并且前后端分离会为以后的大型分布式框架,弹性计算架构,微服务架构,多段化服务(多 ...

  6. 移动端开发者眼中的前端开发流程变迁与前后端分离

    写在最开始 这是一篇面向移动端开发者的科普性文章,从前端开发的最初流程开始,结合示范代码,讨论开发流程的演变过程,希望能覆盖一部分前端开发技术栈,从而对前端开发的相关概念形成初步的认识. 本文会提供一 ...

  7. 前后端分离的思考与实践(三)

    Midway-ModelProxy - 轻量级的接口配置建模框架 前言 使用Node做前后端分离的开发模式带来了一些性能及开发流程上的优势(见<前后端分离的思考与实践 一>), 但同时也面 ...

  8. 七个开源的 SpringBoot 前后端分离项目,Star过千,快去收藏夹吃灰吧!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 微信公众号:江南一点雨 前后端分离已经在慢慢走进各公司的技 ...

  9. 前后端分离后的前端时代

    什么是前后端分离,要区分前端和后端,需要有个明确的界限.一般,用户可以直接看到的东西,都是属于前端的范畴,除了前端之外都属于后端了. 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的 ...

  10. 开发一个大型后台管理系统,应该用前后端分离的技术方案吗?

    话说这天,我们团队开会讨论了一个问题,不,与其说"讨论",不如说"争吵"更合适. 背景是这样的: 我们要开发一个 xxx 后台管理系统,这个系统业务复杂.功能又 ...

最新文章

  1. 华为实施微服务架构的五大军规
  2. Pandas中iloc、loc、ix三者的区别
  3. CSS3无前缀脚本prefixfree.js与Animatable使用
  4. Omi框架学习之旅 - 插件机制之omi-touch 及原理说明
  5. MyBatis 实际使用案例-typeHandlers【重点】
  6. 吐槽今年一级计算机,吐槽大会#辽宁省考#当一个没有情感的计算机器
  7. 计算机工程与应用查重吗,计算机工程期刊录用率_计算机工程与应用期刊_计算机八大核心期刊...
  8. c++基础学习(10)--(文件、流、异常处理、动态内存、命名空间)
  9. 学习node.js的一些笔记
  10. CCF201903-1 小中大(100分)【序列处理】
  11. [渝粤教育] 西南科技大学 应用文写作 在线考试复习资料
  12. 手扶电梯缺陷检测图像数据集(VOC标签)
  13. java文件切割工具
  14. mysql partition赋权_Mysql的赋权
  15. mysql数据创建用户及授权
  16. Jenkins版本升级指南
  17. 2023面试官常考的前端面试题
  18. mysql 5.0.8 下载_mysql-connector-
  19. Vue报错:VueCompilerError: Attribute name cannot contain U+0022 (“), U+0027 (‘), and U+003C (<).
  20. Ubuntu手机操作系统稳定版 20131018

热门文章

  1. 泰拉瑞亚云服务器的搭建
  2. FTP、Telnet、SMTP、POP3等服务的名称及端口号和各种数据库的端口号
  3. pyhon3 爬取河海大学URP教务系统,爬取个人成绩,和本学期的成绩GPA,保存到excel
  4. 速轩三维 - 手持式激光三维扫描仪
  5. 简易开发的百度地图API
  6. android打开word
  7. Win11怎么把桌面文件路径改到D盘
  8. 《 阿房宫赋》古文鉴赏
  9. PR如何对裁剪之后的视频进行resize,指定到期望大小?
  10. Android下图片清晰度识别