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

前后端分离的时代,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,再也不用维护接口文档了!),文档中约定了接口的详细信息,前后端分别按照既定的接口规范去开发,在尚未开发完成时,可以借助 Mock 来进行测试。

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

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

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

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

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

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

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

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

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

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

微人事
V部落
好了,本文就说到这里,有问题欢迎留言讨论。

关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享!

--------------------- 
作者:_江南一点雨 
来源:CSDN 
原文:https://blog.csdn.net/u012702547/article/details/94381774 
版权声明:本文为博主原创文章,转载请附上博文链接!

前后端分离时代,Java 程序员的变与不变!相关推荐

  1. 计算机毕业设计-ssm+vue汽车销售管理系统-汽车商城(前后端分离)java代码

    计算机毕业设计-ssm+vue汽车销售管理系统-汽车商城(前后端分离)java代码 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 设计模式:MVC 架构:B ...

  2. 计算机毕业设计-基于ssm+vue的化妆品商城管理系统(前后端分离)java代码

    计算机毕业设计-基于ssm+vue的化妆品商城管理系统(前后端分离)java代码 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言:Java 设计模式: ...

  3. 前后端解析_好程序员Web前端教程分享前后端分离接口

    随着互联网的高速发展以及IT开发技术的升级,前后端分离已成为互联网项目开发的业界标准使用方式.在实际工作中,前后端的接口联调对接工作量占Web前端人员日常工作的30%-50%,甚至会更高.接下来的好程 ...

  4. 前后端分离的Java微信小程序B2C商城 H5+APP源码

    Java B2C商城微信小程序 H5+APP源码 前后端分离 H5+微信小程序+ Android+IOS, Java SpringBoot+vue 开发语言:JAVA 数据库:MySQL 开发工具:E ...

  5. 后端技术:Java 程序员常犯的 10 个 SQL 错误!

    Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用"模式-模式" ...

  6. 【同行说技术】Java程序员小白变大神必读资料汇总(三)

    在之前的Java技术汇总文章里,向大家介绍了Java入门学习的基础资料,今天小编汇总了5篇Java技术进阶实操的干货,赶紧来看看吧!另外,喜欢写博客的工程师博主可以加工程师博主交流群:39151912 ...

  7. 后端技术:Java程序员常用的11个API,你都知道吗?

    1.Scanner 类 一个可以解析基本类型和字符串的简单文本扫描器. package cn.wxuns;import java.util.Scanner;public class MyScanner ...

  8. 云计算时代 Java 程序员面临的挑战和机遇

    1. 简单介绍自己 我是小马哥(mercyblitz),Java 劝退师,Apache Dubbo PMC.Spring Cloud Alibaba 项目架构师,<Spring Boot 编程思 ...

  9. SpringBoot+Vue前后端分离的Java快速开发框架 工作流开发框架

    多聚合是一套全部开源的Java快速开发平台,毫无保留给个人及企业免费使用. 我们集成了常见的功能模块. 前端采用Vue.Element UI. 后端采用Spring Boot.Shiro.Redis. ...

最新文章

  1. 一人一天发两篇Science,视频揭秘:植物如何在与病菌的斗争中取胜?
  2. 加大力度改革 成都公安提高服务金融安防建设能力
  3. leetcode 650. 2 Keys Keyboard | 650. 只有两个键的键盘(暴力递归->傻缓存->DP)
  4. Cocos creator之javascript闭包
  5. 存储过程(简单入门)
  6. 【Matlab学习笔记】【编程实例】一(将两幅图像调整为相同的尺寸大小)
  7. stm32学习笔记:点阵模块74HC595、APM4953
  8. JQuery UI Layout
  9. android Measurespec测量模式
  10. Windows下GetLastError()返回值介绍
  11. MyBatis学习----使用mybatis对单表进行操作
  12. 【java_wxid项目】【第十五章】【Spring Cloud Skywalking集成】
  13. python xpath定位 麦客表单
  14. 谷歌浏览器崩溃之错误代码:RESULT_CODE_MISSING_DATA
  15. 你可以把Linux内核当成一家软件外包公司的老板
  16. MyEclipse清除已永久保存的SVN账号
  17. 云服务器、VPS、虚拟主机三者之间的区别?
  18. 使用VB写一个简单的添加系统环境变量的软件以及实现一键格式化U盘
  19. 【VUE】web高德地图海量点标记,全部居中显示在屏幕中
  20. 学遥感必读的十本专业书

热门文章

  1. 第四十二篇 面对对象进阶
  2. python中的re模块——正则表达式
  3. 【转】C语言中DEFINE简介及多行宏定义
  4. 【Beta阶段】M2事后分析
  5. HDU 3507 Print Article(斜率优化DP)
  6. C++利用访函数进行选择排序
  7. HDOJ 3255 Farming(扫描线 + 线段树 体积的并)
  8. 钢琴快案例及手风琴案例
  9. 笔记28 接受请求的输入 ——处理表单
  10. 网络基础知识----------iptables