vlambda博客
学习文章列表

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

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

  • 前后端分离的时代,Java后台程序员的技术建议?

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

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

从一个题外话开始

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

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

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

  1. 前端的发展。前端经过近几年的发展,已经不再是我们传统所说的HTML+画图了,各种概念层出不穷,webpack、RxJs、Node、Redux、ssr、NuxtJs等,前端已经可以胜任很多事情,也能够完成更加丰富的用户交互。

变与不变

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

  • 工作内容变

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

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

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

  • 接口变

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

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

  • 开发流程变化

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

一般在开发之前,整个项目组需要先设计好一个接口文档,一般可以采用 Swagger 来做接口文档(),文档中约定了接口的详细信息,前后端分别按照既定的接口规范去开发,在尚未开发完成时,可以借助 Mock 来进行测试。

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

不变

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

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

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

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

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

结语

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

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

再推荐两个入门项目:

好了,本文就说到这里,有问题欢迎留言讨论。


你点的每个在看,我都认真当成了喜欢