客观的谈一下前后端分离的利与弊

执手相看语凝噎 发布于 04/01 09:10
阅读 596
收藏 0

在此重申一点:“撇开应用场景谈实现都是耍流氓;”

先谈二者的优点:

    前后端分离:

        1)减轻了动态服务器的压力,将静态内容请求分离出来,术业有专攻,让专业的服务器干专业的事;

        2)摆脱了后台开发既当爹又当妈的现状,专心从事后台框架和业务的开发,进行更精准的单元测试;

        3)前台代码更加规范化,模块化,让前端逻辑更清晰明了;

        4)项目解耦,前台有bug启前台,后台有bug启后台,各用各的IDE;

这是很多文章谈前后端分离的利与弊时说最多的话;

我们不容否认前后端分离是Web项目工程的理论进步,但是以上几点真的是现在刚刚出现的么?他就无懈可击的没有缺点了么?

咱们从No.1的优点谈起,这个实际上是很多公司重构前后端分离的最初目的,因为这个提升效率,减少成本,最直白能看见的效果。其实理由这个最傻,我从12年开始使用“七牛云”的CDN静态资源加速,完全依赖于浏览器对应<link>、<img>、<script>的跨域支持呀,需要你前后端分离专门操心这点破事?html页面虽然仍需要静态请求,但是Tomcat等服务器也不会拿html后缀的文件过后台服务器,完全不曾影响过效率。

TODO...未完待续

 

        

加载中
1
javaxiaoz
javaxiaoz

所以弊端是啥啊

执手相看语凝噎
执手相看语凝噎
下面已经阐述的很好了,主要是浪费人力资源,降低开发效率上,来不及举例子了,就是上来找点资料,顺便回复下。更多的是后端赏了前端一晚饭。不说了,项目忙,处理完回来写个完整的。
1
独孤晓林

所以弊端是啥啊

1
前端大师傅
前端大师傅

说得不完全,所以让人觉得你不知道在说什么。前后端分离对于性能有影响的有一个非常重要的东西楼主没说出来。就是模板放在哪里,这个问题不说清楚,就谈不了前后端分离。

在传统web开发,模板就是放在服务端,从asp,php开始都是这样。自从RequireJS以后,前端有了MVVM,有了路由和模板,这样就有了模板放在服务端合成,还是放在客户端合成的问题。

前后端分离,除了工作分工以外,更重要的是将模板合同由服务端操作变成了客户端(浏览器操作),还有就是由服务端路由拦截,变成了客户端伪路由拦截(不好意思浏览器解析location不是伪吗),所以这时区别就出来了。如果前端模板则模板第一次加载后会304到本地,而服务端模板则每次需要去请求下载。因为服务端合成模板每次action操作是飞机带翅膀(带模板和数据一次发到客户端的),基本上说到这里优缺点很明显了:

前后端分离使用客户端模板优点:304不需要反复下载模板极大节约带宽。减轻服务端的压力把压力分布到众客户端。

缺点则是:加重客户端浏览器的负担,如果客户端性能差则影响用户体验,由于运算在客户端还有路由也是改变浏览器的url来实现webpack(不光是打包更是统一访问)。V8引擎助力不少,但浏览器的压力会非常大,如果背包数据比较多可以,但如果与服务端交互比较多则不建这种。

执手相看语凝噎
执手相看语凝噎
...咱们都是码农,昨天想详细写下,结果紧急来了个项目正在搞。这几天没时间写了。
0
雨翔河
雨翔河

我不反对什么前后端分离,不管怎么分离,在某些场景下会很麻烦。

1.  SEO,如果要做前后端分离,SEO怎么办。

2. 人力不足的时候,还前后端分离,恨不得全栈。

3. 有时候一个简单的操作会变得很麻烦,这个不举例子了,意会下就好了。

0
kakai
kakai

前后端分离的最大优点就是不拘泥与客户端环境,客户端可以是PC、移动应用,也可以是浏览器html、H5、小程序,甚至是其它后端服务,我认为前后端分离应该是紧随微服务的脚步发展而来的。

0
清风-蓝魔泪
清风-蓝魔泪

1.在小项目中前后端分离会造成资源浪费(原本一个人可以做的,现在需要2个人)

2.对SEO支持不友好,需要再做一层node,增加了复杂度

优点就不说了,除非是中小型公司,绝大多数是利大于弊

返回顶部
顶部