事情的起因是这样的, 有个星球的小伙伴向邀请松哥在知乎上回答一个问题, 原题是:
前后端分离的时代, Java 后台程序员的技术建议?
松哥认真看了下这个问题, 感觉对于初次接触前后端分离的小伙伴来说, 可能都会存在这样的疑问, 于是决定通过这篇文章和大家聊一聊这个话题.
我这里还是尽量从一个 Java 程序员的角度来说说这个问题, 这样大家可能更好理解.
从一个题外话开始
很多小伙伴可能知道, 松哥本科是经管学院的, 亚当 • 斯密的《国富论》多多少少还是了解一点. 书中提到人类社会的本质就是分工协作, 亚当 • 斯密认为人类之间的专业分工可以极大的提高生产力, 创造财富, 专业分工也是工业革命的基础. 人类社会的发展过程就是一个专业分工不断细化, 不断深化的过程, 从最早的农牧分家到手工业农业分家再到商人的出现, 其实都是专业分工不断细化深化的体现.
我们的开发世界也是一个小宇宙, 专业分工不断细化也是一个趋势, 从这个角度来说, 前后端分离, 都是值得积极拥抱的.
前后端分离的开发方式在最近几年突然火起来, 松哥认为有两方面的原因:
前端的发展. 前端经过近几年的发展, 已经不再是我们传统所说的 html + 画图了, 各种概念层出不穷, webpack,RxJs,Node,Redux,ssr,NuxtJs 等, 前端已经可以胜任很多事情, 也能够完成更加丰富的用户交互.
移动互联网的发展. 前两年移动互联网的火爆, 很多公司的产品都要在多个平台上线, Android,iOS, 小程序, 公众号, PC 等等各个平台都要展示, 不可能针对不同的设备开发一套后端, 应该是多个前端共用同一个后端, 这是就不能采用传统的前后端不分的方式来开发后端程序了. 正是这样的业务需求, 促进了前后端分离的发展.
变与不变
程序员之间的分工协作方式有所变化, 开发方式当然也会随着一起变化. 但是这种变化其实是非常细微的, 很容易上手的.
变
工作内容变
老实说, 前后端分离之后, 对 Java 程序员的要求变低了, 以前大家大家出去面试 Java 工程师, 如果是前后端不分的话, 前端基本上也是必问的, 常见的问题就是各种元素选择器, 这也很好理解, 因为在前后端不分的开发方式中, 后端工程师多多少少是要写一点前端代码的, 你很难完完全全的只写 Java 代码. 但是在这种情况下, 你要写的前端代码其实都是很简单的, 不会是特别难的.
前后端分离之后, Java 程序员只需要专注于后台业务逻辑, 对外接收前台传来的参数, 根据参数给出不同的响应即可, 基本上不需要写前端代码. 因为这个时候的前端不同于前后端不分时候的前端, 前后端分离之后, 前端还是有一定的难度, 较为常见的是 SPA 应用, 涉及到 Node.JS,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 干货!
来源: https://www.cnblogs.com/lenve/p/11112702.html