首页 > 其他分享 >为什么要选择前后端分离?

为什么要选择前后端分离?

时间:2024-01-18 23:32:28浏览次数:23  
标签:为什么 前后 工程师 前端 分离 模式 开发

Python 做全栈开发,其实有两种实现方式。一种就是前后端不分离的模式,通过 Flask 的模版语法来实现。但是这样做对前端的支持并不全面,另外大多数企业目前也摆脱了这样的模式。

另一种就是前后端分离的模式,这是现在企业项目里经常采用的开发方式。为什么现在后者更常用呢,我们还得从项目开发的进化过程说起。

在最初的项目开发过程中,公司没有明确的岗位划分。这意味着一个工程师既要实现后端代码,同时也要完成前端效果呈现的代码编写,具体关系你可以参考我画的这张示意图。

为什么要选择前后端分离?_前后端分离

随着前端技术栈的迭代,Ajax 技术诞生之后,大大推动了 Web2.0 的快速发展,前端不再是后端的模板,可以独立得到各种数据。前端的页面也越来越动态化,它追求更多交互,同时也需要处理大量的数据,对前端工程师的技术要求也越来越高,前后端的工作也就越来越明晰化,前后端分离模式也就此盛行起来。

那前后端分离的结构模式是什么样子呢?可以通过下面这张图来辅助理解。

为什么要选择前后端分离?_前后端分离_02

前后端的分离模式,只是缓解了原先“前端后端全包揽”的工程师们的痛苦吗?显然不止如此,接下来我们就来分析一下,这种模式在开发协作和工程优化方面的优势。

从开发协作的角度看,前后端分离带来了两方面好处。首先,工程师的职能划分更加清晰。对于项目中出现的问题,因为分工明确,就可以快速找出问题方,定位问题和解决问题的效率都得到了提升;其次是提升开发效率。此时已经实现了前后端并行开发,前后端不再像以前具有强依赖关系了。前后端各司其职,这既提升了项目的开发效率,同时也让开发人员变得更加精专,不断推进技术的发展。

而从工程优化的角度思考,前后端分离的优势也很明显,优点主要有下面四个。

1、减轻后端服务器的开发和负载压力,让后端更“专注”地发挥自身优势。

2、前端与后端分别部署在不同服务器上,不会出现一个服务器宕机,前后端都无法访问的情况。即便在数据响应上形成阻断,但是前端界面依旧可以访问,这样大大优化了用户体验。

3、接口多复用。从上面的关系图中,我们不难发现后端开发侧重产出接口,单个接口可服务多端,同时满足需要该功能的 PC 网页、APP、小程序、移动端 H5 等不同终端,真正实现高效开发。

4、前后端分离之后,对于前端页面是异步加载,前端可以承担更多内容的呈现,页面可以保证速度更加流畅、兼容性、用户体验等。


标签:为什么,前后,工程师,前端,分离,模式,开发
From: https://blog.51cto.com/key3feng/9321086

相关文章

  • 为什么机器学习习惯设置random_state = 42 ?
    在学机器学习写代码时一直有个小疑问,为什么大家习惯设置random_state=42?甚至许多官方文档也是用的42这个数字。简单上网搜索之后发现原来是在致敬这本道格拉斯·亚当斯所作的幽默荒诞风的科幻小说——《银河系漫游指南》(Thehitchhiker'sguidetothegalaxy)花了两天时间把这本......
  • 为什么double会被序列化为NaN
    提问为什么double会被序列化为NaN回答世界上存在Double.NaN这个东西,他被序列化就会成为NaNexample//Seehttps://aka.ms/new-console-templateformoreinformationusingSystem.Globalization;usingNewtonsoft.Json;usingNewtonsoft.Json.Converters;Console.Writ......
  • Java里public类的定义为什么报错
    这是一个普通的main定义,这里我们看到public修饰了classMain,并且我们的Java文件名也是Main,这是合理的定义,没有报错。因为public修饰的类只能在自己的文件里,Main类是public的,所以它在Main的Java文件里可以使用。像这样,它就会出错。因为是public修饰的类,但是Java文件名并不是Ca......
  • 为什么要分库分表?
    https://www.bilibili.com/video/BV1fV4y1M7eD/?spm_id_from=333.788.recommend_more_video.0&vd_source=46d50b5d646b50dcb2a208d3946b1598https://www.bilibili.com/video/BV1ae4y1E7HH/?spm_id_from=333.999.0.0&vd_source=46d50b5d646b50dcb2a208d3946b1598......
  • 记录--为什么 export 导出一个字面量会报错,而使用 export default 就不会报错?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助核心其实总的来说就是export导出的是变量的句柄(或者说符号绑定、近似于C语言里面的指针,C++里面的变量别名),而exportdefault导出的是变量的值。需要注意的是:模块里面的内容只能在模块内部修改,模块外部只能使......
  • 前后端分离,Asp.net core webapi 简单 2 步,轻松配置跨域
    前言可以说,前后端分离已经成为当今信息系统项目开发的主流软件架构模式,微服务的出现,让前后端分离发展更是迅速,大量优秀的前端框架如vue.js、react的出现,也让前后端分离趋势加快。所谓的前后端分离软件架构模式,就是指将前端和后端的开发完全分离,后端负责提供API接口和数据处理......
  • RocketMQ 中冷热分离的随机索引模块详解
    作者:苏昌盛消息系统中随机索引的特点RocketMQ广泛使用于各类业务场景中,在实际生产场景中,用户通常会选择消息ID或者特定的业务Key(例如学号,订单号)来查询和定位特定的一批消息,进而定位分布式系统中的复杂问题。传统方案下,消息索引的存储是基于数据库系统或者基于本地文件系统实现......
  • RocketMQ 中冷热分离的随机索引模块详解
    作者:苏昌盛消息系统中随机索引的特点RocketMQ广泛使用于各类业务场景中,在实际生产场景中,用户通常会选择消息ID或者特定的业务Key(例如学号,订单号)来查询和定位特定的一批消息,进而定位分布式系统中的复杂问题。传统方案下,消息索引的存储是基于数据库系统或者基于本地文件系统实......
  • 在Python中为什么同样的Cypher语句运行结果不会完整显示
    Neo4j是一款流行的图数据库,它使用Cypher查询语言来操作和查询图数据。在Python中,我们可以使用Neo4j的官方驱动程序或第三方库(如py2neo)来与数据库进行交互。然而,当我们执行某些复杂的Cypher查询时,有时会发现结果被截断或不完整显示。下面将介绍可能导致此问题的原因,并提供相应的解决......
  • 为什么要避免在 Go 中使用 io.ReadAll
    ioutil包在go1.16版本已弃用。io.ReadAll()实现://src/io/io.gofuncReadAll(rReader)([]byte,error){//创建一个512字节的buf b:=make([]byte,0,512) for{ iflen(b)==cap(b){ //如果buf满了,则追加一个元素,使其重新分配内存 b=append(b,0)[......