摘要:前后端分離的開發方式在最近幾年突然火起來,松哥認為有兩方面的原因前端的發展。不變其實除了前后端交互方式發生變化之外,其他的地方都是不變的。
事情的起因是這樣的,有個星球的小伙伴向邀請松哥在知乎上回答一個問題,原題是:
前后端分離的時代,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+微服務以及前后端分離等全棧技術,定期視頻教程分享,關注后回復 Java ,領取松哥為你精心準備的 Java 干貨!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75081.html
摘要:點擊訂閱云棲夜讀周刊月日,首屆世界大健康博覽會舉行期間,阿里云宣布其聯合支付寶共同研發的區塊鏈醫療解決方案已經正式應用于武漢中心醫院的電子處方,武漢市中心醫院也成為首家應用該技術方案的未來醫院。【點擊訂閱云棲夜讀周刊】 4月8日,首屆世界大健康博覽會舉行期間,阿里云宣布其聯合支付寶共同研發的區塊鏈醫療解決方案已經正式應用于武漢中心醫院的電子處方,武漢市中心醫院也成為首家應用該技術方案的未來...
摘要:更詳細的內容下一章開篇深入聊聊前后分離講述關于我目前在寫從零構建前后分離項目系列,修正和補充以此為準不斷更新的項目實踐地址彩蛋提前預覽下一章傳送門 開篇 : 縱觀WEB歷史演變 在校學習和幾年工作工作中不知不覺經歷了一半的 WEB 歷史演變、對近幾年的發展比較了解,結合經驗聊聊 WEB 發展歷史。 演變不易,但也是必然,因為為人始終要進步。 WEB 的發展史 一、開山鼻祖 - 石器時代...
摘要:更詳細的內容下一章開篇深入聊聊前后分離講述關于我目前在寫從零構建前后分離項目系列,修正和補充以此為準不斷更新的項目實踐地址彩蛋提前預覽下一章傳送門 開篇 : 縱觀WEB歷史演變 在校學習和幾年工作工作中不知不覺經歷了一半的 WEB 歷史演變、對近幾年的發展比較了解,結合經驗聊聊 WEB 發展歷史。 演變不易,但也是必然,因為為人始終要進步。 WEB 的發展史 一、開山鼻祖 - 石器時代...
摘要:的內存分配方式修飾變量通常情況下,變量有個地方可以賦值直接賦值,構造函數中,或是初始化塊中。如就是對于變量,在聲明時,如果你沒有賦值,系統默認這是一個空白域,在構造函數進行初始化,如果是靜態的,則可以在初始化塊。 【java中為什么會有final變量】: final這個關鍵字的含義是這是無法改變的或者終態的; 那么為什么要阻止改變呢? java語言的發明者可能由于兩個目的而阻止改變: ...
摘要:總結我覺得,以后基于的全棧式開發的模式將會越來越流行,這也會引領前端步入工程化時代。歡迎繼續關注本博的更新中間層實踐一基于的全棧式開發中間層實踐二搭建項目框架中間層實踐三配置中間層實踐四模板引擎中間層實踐五中間層的邏輯處理 版權聲明:更多文章請訪問我的個人站Keyon Y,轉載請注明出處。 前言 近期公司有個新項目,由于后端人手不足,我果斷的提議用node中間層的方案,得到了老大的支持...
閱讀 1039·2021-11-18 13:23
閱讀 746·2021-11-08 13:16
閱讀 855·2021-10-11 10:58
閱讀 3510·2021-09-22 15:26
閱讀 1732·2021-09-08 10:42
閱讀 1807·2021-09-04 16:45
閱讀 1733·2019-08-30 15:54
閱讀 2564·2019-08-30 13:45