前後端分離時代,Java 程式設計師的變與不變!

江南一點雨發表於2019-07-01

事情的起因是這樣的,有個星球的小夥伴向邀請鬆哥在知乎上回答一個問題,原題是:

  • 前後端分離的時代,Java後臺程式設計師的技術建議?

鬆哥認真看了下這個問題,感覺對於初次接觸前後端分離的小夥伴來說,可能都會存在這樣的疑問,於是決定通過這篇文章和大家聊一聊這個話題。

我這裡還是儘量從一個 Java 程式設計師的角度來說說這個問題,這樣大家可能更好理解。

從一個題外話開始

很多小夥伴可能知道,鬆哥本科是經管學院的,亞當•斯密的《國富論》多多少少還是瞭解一點。書中提到人類社會的本質就是分工協作,亞當•斯密認為人類之間的專業分工可以極大的提高生產力、創造財富,專業分工也是工業革命的基礎。人類社會的發展過程就是一個專業分工不斷細化、不斷深化的過程,從最早的農牧分家到手工業農業分家再到商人的出現,其實都是專業分工不斷細化深化的體現。

我們的開發世界也是一個小宇宙,專業分工不斷細化也是一個趨勢,從這個角度來說,前後端分離,都是值得積極擁抱的。

前後端分離的開發方式在最近幾年突然火起來,鬆哥認為有兩方面的原因:

  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 乾貨!
前後端分離時代,Java 程式設計師的變與不變!

相關文章