jojo我不做全栈了——前后端分离架构
作为一名还在学习的小白程序员,我常常会会遇到各种困难,这其中有一些可能会让我陷入极大的痛苦之中甚至开始怀疑自己。
当我们在学习完后台的技术能写出逻辑清晰、条理明确、符合高内聚底耦合要求的高效服务器代码时,上面却要求我写一个花里胡哨的html界面。又或者是有着优秀的css编写能力,对大前端又着很到位的技术能力,要求确实很少接触的后端代码编写,我很多相信与同一阶段的朋友应该也会有和我一样的感受。
在一开始我以为,一定只有成为一个全栈大佬才能被公司肯定和需要,但是全栈工程师是那么好当的吗?
全栈工程师: 技术多面手,掌握多种技能,能够独立完成 non-trivial application ,在技术栈的各个领域都能够做到出色的工程师
短短的几句形容就让人感觉全栈的NB。
但是,人才可遇不可求,没有全栈企业要发展,也要有人完成项目啊,那么,有什么办法可以让前端和后端开发只做自己擅长的事情于是就有了石鬼面——前后端分离
那什么是前后端分离呢?看一张图
简单的理解就是:前端人员和后端人员约定好接口后,前端人员彻底不用再关心业务处理是怎么回事,他只需要把界面做好就可以了,后端人员也不用再关系前端界面是什么样的,他只需要做好业务逻辑处理即可。服务的切离,代码管理,服务部署也都独立出来分别管理,系统的灵活性也获得了极大的提升。
大部分的互联网公司都分成了前端团队和后端团队。在软件设计中,我们有一个思想就是 Separation of Concerns (Soc),也就是 关注点分离 的思想。既然我们采用了前后端由不同团队开发的模式,那么我们应该有分治的思想,也就是说,我们要尽可能更多地关注自己从事的领域。
以前的JavaWeb项目大多数都是java程序员又当爹又当妈,又搞前端,又搞后端。
随着时代的发展,渐渐的许多大中小公司开始把前后端的界限分的越来越明确,前端工程师只管前端的事情,后端工程师只管后端的事情。正所谓术业有专攻,一个人如果什么都会,那么他毕竟什么都不精。
在前后端分离的架构模式下,我们就不需要太过烦恼,自己只掌握单一的前端或后端技术,在这种架构模式下,就能有效的利用人才,最大化人才的利用率,同时也减弱了企业对开发人员的数量和质量要求,就不需要人人都是全栈大佬,人人都要精通全部技术。
作为程序员的我们在前后端分离中要做到什么要求呢?
- 1、对于后端java工程师:
把精力放在java基础,设计模式,jvm原理,spring+springmvc原理及源码,linux,mysql事务隔离与锁机制,mongodb,http/tcp,多线程,分布式架构,弹性计算架构,微服务架构,java性能优化,以及相关的项目管理等等。
后端追求的是:三高(高并发,高可用,高性能),安全,存储,业务等等。
- 2、对于前端工程师:
把精力放在html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8引擎,javascript多线程,模块化,面向切面编程,设计模式,浏览器兼容性,性能优化等等。
前端追求的是:页面表现,速度流畅,兼容性,用户体验等等。
最后我要说的是前后端分离是种架构模式,或者说是最佳实践。所谓模式就是大家这么用了觉得不错,你可以直接抄来用的固定套路。这是我对前后端分离的初步理解,和对网络材料的一些引用,感觉观看