事情的起因是这样的,有个星球的小伙伴向邀请松哥在知乎上回答一个问题,原题是:

* 前后端分离的时代,Java后台程序员的技术建议?
松哥认真看了下这个问题,感觉对于初次接触前后端分离的小伙伴来说,可能都会存在这样的疑问,于是决定通过这篇文章和大家聊一聊这个话题。

我这里还是尽量从一个 Java 程序员的角度来说说这个问题,这样大家可能更好理解。

从一个题外话开始


很多小伙伴可能知道,松哥本科是经管学院的,亚当•斯密的《国富论》多多少少还是了解一点。书中提到人类社会的本质就是分工协作,亚当•斯密认为人类之间的专业分工可以极大的提高生产力、创造财富,专业分工也是工业革命的基础。人类社会的发展过程就是一个专业分工不断细化、不断深化的过程,从最早的农牧分家到手工业农业分家再到商人的出现,其实都是专业分工不断细化深化的体现。

我们的开发世界也是一个小宇宙,专业分工不断细化也是一个趋势,从这个角度来说,前后端分离,都是值得积极拥抱的。

前后端分离的开发方式在最近几年突然火起来,松哥认为有两方面的原因:

*
前端的发展。前端经过近几年的发展,已经不再是我们传统所说的HTML+画图了,各种概念层出不穷,webpack、RxJs、Node、Redux、ssr、NuxtJs等,前端已经可以胜任很多事情,也能够完成更加丰富的用户交互。
* 移动互联网的发展。前两年移动互联网的火爆,很多公司的产品都要在多个平台上线,Android、iOS、小程序、公众号、PC
等等各个平台都要展示,不可能针对不同的设备开发一套后端,应该是多个前端共用同一个后端,这是就不能采用传统的前后端不分的方式来开发后端程序了。正是这样的业务需求,促进了前后端分离的发展。
变与不变

程序员之间的分工协作方式有所变化,开发方式当然也会随着一起变化。但是这种变化其实是非常细微的,很容易上手的。



* 工作内容变
老实说,前后端分离之后,对 Java 程序员的要求变低了,以前大家大家出去面试 Java
工程师,如果是前后端不分的话,前端基本上也是必问的,常见的问题就是各种元素选择器,这也很好理解,因为在前后端不分的开发方式中,后端工程师多多少少是要写一点前端代码的,你很难完完全全的只写
Java 代码。但是在这种情况下,你要写的前端代码其实都是很简单的,不会是特别难的。

前后端分离之后,Java
程序员只需要专注于后台业务逻辑,对外接收前台传来的参数,根据参数给出不同的响应即可,基本上不需要写前端代码。因为这个时候的前端不同于前后端不分时候的前端,前后端分离之后,前端还是有一定的难度,较为常见的是
SPA 应用,涉及到 NodeJS、Webpack 等,此时如果还要让后端工程师写前端代码,对后端工程师的技术要求就会比较高。

不过话说回来,前后端分离后,如果你还能即写前端又写后端,那可以让老板加薪了。

* 接口变
前后端不分的时候,很少会涉及到接口设计,以 SpringMVC 为例,你可能返回的始终是 ModelAndView
一类的东西,前后端分离之后,我们基本上不需要返回页面了,后端主要是返回 JSON 数据,所以关键是设计好各种接口。

一个比较好的实践方案是设计满足 RESTful 规范的接口,语义明确,简洁明了,看到 URL 就知道你想干嘛!

* 开发流程变化
前后端分离之后,前端不可能等后端开发好接口之后再去开发,如果这样,原本两个月做完的项目可能就得 4 个月才能完成。

一般在开发之前,整个项目组需要先设计好一个接口文档,一般可以采用 Swagger 来做接口文档(
SpringBoot整合Swagger2,再也不用维护接口文档了!
<https://mp.weixin.qq.com/s/iTsTqEeqT9K84S091ycdog>
),文档中约定了接口的详细信息,前后端分别按照既定的接口规范去开发,在尚未开发完成时,可以借助 Mock 来进行测试。

前端也是使用模拟数据进行测试,开发完成之后,前后端接口联调,完成测试。

不变

其实除了前后端交互方式发生变化之外,其他的地方都是不变的。

前后端分离,一般来说是不会影响后端技术架构的,你使用了 SSM 或者 Spring Boot 或者 Dubbo
或者微服务,无论什么,这些技术架构既可以支撑你前后端不分的项目,也可以支撑你前后端分离的项目。

因此我说后端技术架构不受前后端分离影响。

另一方面,技术的根本不变,例如你做 Java 开发,该会的
SSM/SpringBoot/Redis/Nginx/Dubbo/SpringCloud/MySQL/MyCat/ELK/...等等,都还得会。

所以,还是去老老实实撸代码吧!

结语

如果仅仅从一个 Java 程序员的角度来说,前后端分离开发这种方式,其实是解放了 Java
程序员,可以让我们专注于后端的工作,不用再去写前端代码,术业有专攻,可以写出更优质的后端代码。不过话说回来,如果想保持一个良好的竞争力,还是有必要去了解一下目前流行的前端开发方式。

前后端分离不是终点,只是软件开发方式演变大潮下的一个点而已,未来的路还很长,还有很多东西需要我们去学习,这只是一个其中一个而已。

最后再给大家推荐几篇松哥之前写的前后端分离的文章:

* 一个Java程序猿眼中的前后端分离以及Vue.js入门
<https://mp.weixin.qq.com/s/HWRYAR16vLE1XFep6_i1tA>
* Spring Boot + Vue 前后端分离,两种文件上传方式总结!
<https://mp.weixin.qq.com/s/Qbqvlo7ftbyP6dnbuUcxrw>
* Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置
<https://mp.weixin.qq.com/s/K8ANNmm6ZrP2xMyK6LGZ_g>
* Spring Boot + Vue 前后端分离开发,权限管理的一点思路
<https://mp.weixin.qq.com/s/5GsOO4QK9AnR0K6FdZixOw>
再推荐两个入门项目:

* 微人事 <https://mp.weixin.qq.com/s/6_D0srW4inv2ZbukN4ivBw>
* V部落 <https://mp.weixin.qq.com/s/VRzcunh9flTJ_EZSBJrfYw>
好了,本文就说到这里,有问题欢迎留言讨论。

关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的
Java 干货!

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信