这段时间为了丰富自己,开始通过 CodeSheep 的视频进行学习,今天看到了大神关于前后端分离的视频,突然间对这个一直有点模糊的概念有了一些比较透彻的认识,趁着这个认识还比较清晰,赶紧写个笔记记下来~

视频里最喜欢,也是让我最透彻的一句话:前后端分不分离不是一个技术目问题,而是一个工程考量问题。这句话真的让我的思维一下子就开阔了起来,之前对于前后端分离大概只有 "前后端分开开发" 的认识,但这句话告诉了我 "前后端分离" 应当从工程的角度,而不是实际上手,也侧面引出了前后端分离也是需要前提条件的,下面一点点总结吧,也再次安利大家去关注下程序羊,真的神,我逛这么久 b 站真正的教知识教技术的大佬

# 起因

从首先从起因开始,为什么会有 "前后端分离" 的概念?

前后端分离的起因涉及到前端的缺陷所在,像之前的 jsp 技术,它将前后端高度耦合了,前后端经常需要沟通,有时候就干脆交给后端做,且前端的开发十分片段化,在实际开发的时候,从项目管理的角度看是十分影响工程的开发效率的,所以为了解决这个问题,在提出了 “解耦”,即前后端分离的开发模式

所以,前后端分离的本质就是为了解耦、高内聚低耦合(后面六个字也使用于其他复杂问题),解决前端没有工程化的问题。而具体的解决方式就是后来的 Vue 一类的前端开发组件化 / 工程化框架,它们的出现也说明前端正在迈入工程化、迭代化、可复用化的时代

# 如何体现

那在工程的角度,前后端分离是如何体现的?

在项目工程中,前后端分离应该体现在工程的各个环节:设计,开发,测试,部署

设计时模型层面的接口约定十分重要,包括接口请求方式,数据类型,格式等,否则在开发阶段就容易出现前后端扯皮的问题,也就算不上是真正的前后端分离了,因为还是没有解耦成功

Vue、React 的组件化,加上开发中前端需要的数据可以从 mock 服务器中模拟获得,使得前端不需要依赖实际的接口,可以进行独立的开发工作

而前后端分离的好处不仅在于前端,对于解耦之后的后端来说,后端开发出来的一个接口往往可以提供给许多前端使用,因为一个接口等于一个功能嘛,意味着在不同的载体上这个接口也会一样使用,也就避免了重复工作

测试的时候基本上保证前后端独立可测试,部署的时候保证前后端独立可部署,版本互相透明,可以按自己的规划来发,不受约束。

# 展望

当然,在现阶段,前端的部署还可以优化。现在后端可以通过 Jenkins 进行可持续发布,那么后续对于前端,也应该会出现适用于前端的 CI(持续集成)系统

# 限制条件

最后还需要提的,不是每个工程都适用于前后端分离,为实现前后端分离所需要的代价是巨大的,这需要前期大量的时间去沟通讨论,因为只要一个环节没有讨论透彻,就会出现上面说的没有解耦的问题,不仅时间成本大,最后又没达到效果。回到最上面的一句话,这是工程考量的问题,这个的项目是否复杂?如果进行前后端分离性价比是否够高?是否值得投入精力进行前后端分离?这都是进行前后端分离前需要考虑的要素

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

斐雅琴 微信支付

微信支付

斐雅琴 支付宝

支付宝

斐雅琴 贝宝

贝宝