前后端分离的意义是什么?

公司一直在推广前后端分离。我认为的前后端分离就是我就不用管前端的交互了,我只需要提供接口以及接口文档给到负责前端开发的同事即可,我不用去关心他的实现方式,不用去关心他是Android iOS web pwa,我可以更加专注的去做好我后台的业务逻辑,写出更好更漂亮的代码。

然而事实并非我想的那样。我们公司前端人手严重不足,前端与后端开发人员的配比1:40左右。
我也不知道是不是这个原因导致的,最后前端就只负责做做样式,完了就扔给后台去做交互,本身后端的业务代码就很复杂,需要花时间理解需求,做设计,可能还需要重构一下之前的代码逻辑,自测等等。

我就想问,难道前后端分离不是为了让我们拆分任务,更专注的做好一件事么?为什么前后端分离以后,交互还是后台开发在做?这是不是伪前后端分离?


看了大家的回答,我觉得我或许找到了前后端分离的意义,也欢迎更多的朋友补充或者是反驳我的观点:
1.让软件变得更好
2.前后端解耦,并行,提高效率


采纳答案以后:
经过与各位的沟通交流,我觉得我已经明确了前后端分离的意义,谢谢各位的帮助。

阅读 10.1k
10 个回答

前后端分离的意义是让各自的工作更加的内聚,就是减少了前后端的“耦合”。耦合性的行为在开发工作前就定好,比方说前后端如何对接,对接api等等。数据不对找后端,渲染问题找前端,也不太存在甩锅问题。

如果在前后端分离的情况下,对于较大型的业务系统而言,前端也需要理清业务逻辑并做一些复杂性的业务交互组件。包括根据后端的权限,我这边该怎么设计按钮显示隐藏。

更不要说还有一些复杂的交互组件,例如甘特图,看板。

实际上对比之前对前端要求要高不少。

对于前后端分离来说。一个前端对应 2 个后端实际上是较为合适的(个人观点。当然其实现在开发速度一直在变快,无论是前端还是后端,但是如果分离开了。明显会令前后端达到一种较为协同的状态),如果是对应3个以上我觉得就已经力不从心了。更不要说 1比40了。

如果全公司只有你一个工程师,那么你还要不要做前后端分离?

我曾经是公司里唯一的工程师,我负责前端、后端、手机端,我曾经用php echo出所有的html。

后来我引入了jquery,从引入ajax的那一刻起,我知道前后端可以分离,因为不需要等待访问数据库完成才显示页面,而可以先把页面显示出来,然后再填充数据。

然后我抛弃了jquery,引入了vue,双向数据绑定使我可以把注意力集中在数据结构上,而更重要的是单页面渲染可以在地址栏不动的情况下改变页面内容。

我付出这么多精力,把已经写好的东西推翻再推翻,只是为了一件事情:让这个网站看起来比别人的更炫酷,我能做到别人做不到的事情,因为超越别人的感觉是如此美好。

在那个小公司里,所有的事情都是我一个人做的,我开发了后端的RESTful接口,引入了Rbac机制,加入了JWT,我做了cdn,我做了负载均衡,我做了数据库读写分离,我搭建了gitlab,我搭建了jenkins,我搭建了zabbix,我搭建了nginx,我申请了letsencrypt的免费https证书,因为它每隔三个月需要自动更新,我引入了acme自动更新机制。我做了前端的vue,我写了所有的css,我引入了微信的jssdk,我引入了微信支付,我开发了小程序,我用react native开发了原生的app,后来又用flutter重构了整个系统。

所以你觉得我是后端工程师,还是前端工程师?

我为什么一个人也要做前后端分离?因为这样的用户体验最好,这样的网站才是先进的网站。

我不觉得什么事情是别人的事情,我不觉得写接口是后端的事情,我不觉得写css是前端的事情,所有的事情都是这个网站的事情,都是我的事情。

后来我们的公司壮大了,又招了几个人,大家逐渐有了分工,但是对我来说,这是我的网站,不管哪里出现了问题,不管是后端出现了问题,还是前端出现了问题,我都会亲自上手修改,所有的代码对我来说都是透明的。

再后来,我不再去亲自动手改代码了,我每天都看每个人的代码,然后告诉他应该如何修改。

责任感再加上时间,最后会使你不再区分前端和后端。

从什么时候做起?从现在做起,学习你不了解的东西,从第一块砖开始,这是你的软件。

职责分离,解耦
并行开发,提高效率
再加上分离部署的话,前端可以单独上线,比较适合敏捷开发模式。

你们公司所为的前后端分离:
1: 你们只做到了表面的分离而已, 是伪分离
2: 1:40的前后端比例已经不符合这个年代了, 反正感觉就是画虎不成的意思

老板说, 你这个有点丑, 改一下界面吧, 前端好, 重新写了一套布局和css 扔给你, 你又重新套页面, 哈哈~头大 ,最可怕的是 之前套过的模板里面还有大量的js dom操作交互之类的效果。~

意义就是:前端做自己该做的页面上的样式、逻辑实现,然后根据后台通过的api跟接口文档,联调显示数据,逻辑交互。
而后台只负责写自己的业务实现,也就是写接口开发文档等。
两者之间,不是像你们现在这样,前端只画的页面,这不叫前端,充其量算个css工程师。
而且,一般我感觉你们这种模式,你们大多数的项目应该不是多复杂那种,前端负责的逻辑其实有很多,比如涉及到购物之类的,整体页面间的交互,前端的数据交互都比较吃力,不可能让你们做后台的又要考虑服务还要考虑接口还要写前端的逻辑实现,你们这种分工显然不合理。
还是换公司吧。哈哈哈哈哈。

你们都少说了一项,分锅好分,前端的锅还是后台的锅,一目了然,哈哈

我理解不深 我觉得前后端分离 有助于开发效率 , 前端可以利用假数据比如mock.js 和后端同时开发, 之后再去对接接口, 如果不是分离的话 连页面的渲染都是以来后端的, 所以效率很低, 后端如果没开发完,可能前端都开发不了

1:40 没法做到前后端分离,到时可以做到前端疯了~

分离的意义就是分工更加明确了。写后台的专心写逻辑,搞性能优化,提供文档就好了,前端则转心改样式写页面。大部分公司招的开发并不能做到前后端都非常熟练使用,写是能写,但是容易分心。赞同采纳的那个答案,1:40搞不了前后端分离的。相当于40个后台把接口写完后扔一堆文档或者一个超大的文档给前端,然后前端一个人苦哈哈的在那里对接。出了问题找人都要找的他懵圈。1:2就是比较合适了,1:3就开始够呛了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题