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

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

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

松哥认真看了下这个问题,感受对于初次接触先后端分离的小伙伴来讲,可能都会存在这样的疑问,因而决定经过这篇文章和你们聊一聊这个话题。webpack

我这里仍是尽可能从一个 Java 程序员的角度来讲说这个问题,这样你们可能更好理解。程序员

从一个题外话开始

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

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

先后端分离的开发方式在最近几年忽然火起来,松哥认为有两方面的缘由:小程序

  1. 前端的发展。前端通过近几年的发展,已经再也不是咱们传统所说的HTML+画图了,各类概念层出不穷,webpack、RxJs、Node、Redux、ssr、NuxtJs等,前端已经能够胜任不少事情,也可以完成更加丰富的用户交互。
  2. 移动互联网的发展。前两年移动互联网的火爆,不少公司的产品都要在多个平台上线,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 程序员,可让咱们专一于后端的工做,不用再去写前端代码,术业有专攻,能够写出更优质的后端代码。不过话说回来,若是想保持一个良好的竞争力,仍是有必要去了解一下目前流行的前端开发方式。

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

最后再给你们推荐几篇松哥以前写的先后端分离的文章:

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

再推荐两个入门项目:

  1. 微人事
  2. V部落

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

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

相关文章
相关标签/搜索