当前位置:   article > 正文

前后端分离始末_前后端分离项目只有前端启动了才能访问页面吗

前后端分离项目只有前端启动了才能访问页面吗

回顾Web发展的30年来,技术栈大概经历了静态页面,js 带来动态效果,动态脚本语言阶段,mvc 阶段,前后端分离阶段这么几个阶段。

 

追溯前端技术栈独立

从宏观上来说,前端技术栈的独立是首先是各种前端框架和前端的工程实践配套基础设施后的的必然产物,目的是提高前端工程的开发效率和管理能力;从个体的角度来说,前端技术框架的出现可以在复杂前端开发的场景中减少开发负担,代码写起来更漂亮,更舒服。所以,无论从宏观角度还是个人开发者的角度来说,前端技术栈的出现动机,并不是为了划分责任田,它只是个工具,只是个为了处理view层开发中的各种痛点出现的工具。

 

前后端工程师出现

尽管没有划分责任田的动机,但是前端技术栈的出现还驱动出了责任田的划分,典型的标志就是前端工程师,后端工程师这种角色的划分开始的。在前后端工程师的划分出现之前,一个Web开发人员默认是必须会前端的,即是不是特别精通,起码要具备独立开发前端的能力。也就是说,起码在MVC时代,一个Web开发人员,起码应该是有独立的交付能力的。这里对独立交付能力的定义式: 无论代码质量如何,起码能能力开发出一个具有使用价值的产物。

 

前后端为什么分离

客观来说,确实前端工程实践和后端工程近些年来都在向纵深发展。前端领域Vue,React,Angular 等等的框架让众多重心在前端的人员有了幸福的烦恼: 真学不动了;后端领域,以Java为例,Spring 生态依旧繁荣,各种迭代还在一路向前,一眼不愁,已经过去了好几个版本号,微服务的风口下,似乎一个Java开发不懂微服务都不好意思和人打招呼,各种数据库还算你方唱罢我登场,mysql 来到了8.X, mongodb 也越来越多的工程实践中看到,redis 也开始了多线程的模型来实现.......作为一个开发人员来说,如果一个人全部都要学,精力真的有限,选择前端或者后端领域来发展,也是非常合理的。加上现在前后端分离开发也是市场上的主流,选择前端或者后端,只要是个人选择,都无可厚非。

 

在理想的前后端分离实践中,前后端是可以并行开发的,前端没必要等到后端开发完成才能进行开发,可以根据约定好的数据协议直接进行开发,双方都完成之后,这个软件就可以直接的run起来了。同时前后端都可以在自己的领域中去深耕,纵深学习和发展,提高个人能力。所以,前后端分离,无论是对个人,还是对公司,简直就是完美!!!!

 

前后端的争执

不经意间已经陷入了对前后端分离之后的甜蜜想象.......但是睁开眼睛,看看现实,似乎真的是这样么?

 

君可见前后端为了接口不同意争得面红耳赤? 君可见前后端联调车祸现场一般的尴尬? 君又曾可见测试,上线的日期一再dealy ?甚至好不容易熬到上线了,又突然来个紧急bug 的惨状? 翻车之后呢? 前后端都说不是自己的原因,自己没有过错,但是挂了就是挂了,这是唯一可以确认的事儿。 各种惨烈的前后端对接翻车现场分分钟直接把你对前后端分离的好梦中叫醒。

 

但是这并不意外,因为前后端分离的各种好处本来就是建立在理论上的理想情况,不建立在实际场景下的假设都始终是假设,禁不住现实的检验。现实情况是,前后端分离人为的划分了责任田,大家都各扫门前雪,和自己没关系的,一概不关心,结果就是你不关心我,我也不关心你,我只认你的接口文档。本来是动态的开发过程,却依靠一个静态的开发文档,这个开发方式的前提就有问题。没有功能分解,没有及时验证反馈,等到双方都开发完毕了,才开始联调,才发现破镜无法重圆。

 

真的学不动了么

说是学不动了,也只是站在理论角度上找的借口而已,试问技术栈是什么? 每个技术栈都是为了在特定的业务场景下解决特定的问题产生的技术解决方案。无论是前端开发还是后端开发,哪个前端或者后端有把市面上所有的技术学一遍的能力和精力? 就算有,学完有用的场景么? 要知道真正有学习能力的人,应该是能触类旁通的,因该是会思考的,思考在什么样的业务场景下用什么样的技术栈,这个技术栈和另一个技术栈有什么不一样,区别在哪里。

 

另外,任何技术栈都不是无本之木,空中楼阁。各种软件技术都是在一层层的底层知识上叠加起来的,不懂底层的最基础的计算机原理,学技术栈就是永远在学新东西,不但学不到精髓,还会把自己学的很累。 但是这个应该是很多人现在学技术栈的现状,一直都在各种技术栈之间疲于奔命。

 

前后端分离,责任不能分离

永远记得这个灵魂拷问:一个软件开发团队的交付物是什么? 答案是: 一个可以正常运行的软件。 没有人需要一堆bug百出的软件,没有交付的软件始终都知识躺在仓库里边的,没有用的文字符号而已,没有任何意义。所以,软件开发的根本目标就是:可以工作的软件。可以工作的软件,是一种目标,也是根本的责任。 从这个角度来看,前后端开发职责分离本身就已经在偏离这个方向了。前后端分离应该只是技术栈上的分离,不是责任的分离,我们无论是前端还是后端都有责任确保一个软件交付之后是可以正常工作的软件。

 

前后端分离对个人开发者的影响

前后端分离直接削弱了个人开发者的生产力,让个人开发者更彻底的丧失了创造力。对于大部分有前端的软件来说,可以工作的软件,前端后端都必不可少,但是如果离开一个团队,单独的一个前端开发者或者后端开发者写的代码只是一些文字符号而已,并不具备任何价值,所以前后端分离后对个人的成长而言,首先失去的就是独立开发完整具备交付价值软件的能力。

 

这一点在后端开发领域尤其明显,越来越多的后端开发者,正在沦为一个个只会写Http接口的CRUD工具,甚至从某些角度来说,这些只会写CRUD的人,就是彻头彻尾的软件蓝领,亦称:码农。有一种我一直不太认可的观点,如果以后AI发展到一定的程度,这种模板方式的代码会直接被AI写完,这时候,蓝领只有被淘汰的命运了,何去何从?

 

软件开发的本质和和任何的艺术活动一样,都是创造性的生产,只要是创造性活动,就一定是要投入自己的感情和责任在里边的。前后端开发的责任分离,让越来越多的前端工程师,后端工程师正在沦为没有感情的代码机器,日复一日的写着模板化的代码,谈何成就感和积极性,创造性? 唯一的成就感,可能也就是在看到工资卡里工资到账的那一瞬间吧!

 

总结

前后端分离只是在应对一些复杂项目开发上的技术栈上的分离,并不是随便一个项目都要前后端分离。同时,各种所谓的前后端分离开发后产生的乱象应该让我们认识到,前后端分离不分离责任,交付可以运行的软件是我们的最大责任和目标。前后端技术栈在近些进来近乎井喷似的爆发,让越来越多的人陷入了一种盲目学习各种技术栈的境地,忽视了底层知识的建立,重视对底层知识的学习才是学习技术栈的出路。要做一个具有生产力的开发者,一定要有感情,有责任,要有成就感,只有做出有价值的软件,作为开发者,也才能真正有价值。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/803459
推荐阅读
相关标签
  

闽ICP备14008679号