摘要:前后端分離的開發(fā)方式在最近幾年突然火起來,松哥認為有兩方面的原因前端的發(fā)展。不變其實除了前后端交互方式發(fā)生變化之外,其他的地方都是不變的。
事情的起因是這樣的,有個星球的小伙伴向邀請松哥在知乎上回答一個問題,原題是:
前后端分離的時代,Java后臺程序員的技術(shù)建議?
松哥認真看了下這個問題,感覺對于初次接觸前后端分離的小伙伴來說,可能都會存在這樣的疑問,于是決定通過這篇文章和大家聊一聊這個話題。
我這里還是盡量從一個 Java 程序員的角度來說說這個問題,這樣大家可能更好理解。
從一個題外話開始很多小伙伴可能知道,松哥本科是經(jīng)管學(xué)院的,亞當(dāng)?斯密的《國富論》多多少少還是了解一點。書中提到人類社會的本質(zhì)就是分工協(xié)作,亞當(dāng)?斯密認為人類之間的專業(yè)分工可以極大的提高生產(chǎn)力、創(chuàng)造財富,專業(yè)分工也是工業(yè)革命的基礎(chǔ)。人類社會的發(fā)展過程就是一個專業(yè)分工不斷細化、不斷深化的過程,從最早的農(nóng)牧分家到手工業(yè)農(nóng)業(yè)分家再到商人的出現(xiàn),其實都是專業(yè)分工不斷細化深化的體現(xiàn)。
我們的開發(fā)世界也是一個小宇宙,專業(yè)分工不斷細化也是一個趨勢,從這個角度來說,前后端分離,都是值得積極擁抱的。
前后端分離的開發(fā)方式在最近幾年突然火起來,松哥認為有兩方面的原因:
前端的發(fā)展。前端經(jīng)過近幾年的發(fā)展,已經(jīng)不再是我們傳統(tǒng)所說的HTML+畫圖了,各種概念層出不窮,webpack、RxJs、Node、Redux、ssr、NuxtJs等,前端已經(jīng)可以勝任很多事情,也能夠完成更加豐富的用戶交互。
移動互聯(lián)網(wǎng)的發(fā)展。前兩年移動互聯(lián)網(wǎng)的火爆,很多公司的產(chǎn)品都要在多個平臺上線,Android、iOS、小程序、公眾號、PC 等等各個平臺都要展示,不可能針對不同的設(shè)備開發(fā)一套后端,應(yīng)該是多個前端共用同一個后端,這是就不能采用傳統(tǒng)的前后端不分的方式來開發(fā)后端程序了。正是這樣的業(yè)務(wù)需求,促進了前后端分離的發(fā)展。
變與不變程序員之間的分工協(xié)作方式有所變化,開發(fā)方式當(dāng)然也會隨著一起變化。但是這種變化其實是非常細微的,很容易上手的。
變工作內(nèi)容變
老實說,前后端分離之后,對 Java 程序員的要求變低了,以前大家大家出去面試 Java 工程師,如果是前后端不分的話,前端基本上也是必問的,常見的問題就是各種元素選擇器,這也很好理解,因為在前后端不分的開發(fā)方式中,后端工程師多多少少是要寫一點前端代碼的,你很難完完全全的只寫 Java 代碼。但是在這種情況下,你要寫的前端代碼其實都是很簡單的,不會是特別難的。
前后端分離之后,Java 程序員只需要專注于后臺業(yè)務(wù)邏輯,對外接收前臺傳來的參數(shù),根據(jù)參數(shù)給出不同的響應(yīng)即可,基本上不需要寫前端代碼。因為這個時候的前端不同于前后端不分時候的前端,前后端分離之后,前端還是有一定的難度,較為常見的是 SPA 應(yīng)用,涉及到 NodeJS、Webpack 等,此時如果還要讓后端工程師寫前端代碼,對后端工程師的技術(shù)要求就會比較高。
不過話說回來,前后端分離后,如果你還能即寫前端又寫后端,那可以讓老板加薪了。
接口變
前后端不分的時候,很少會涉及到接口設(shè)計,以 SpringMVC 為例,你可能返回的始終是 ModelAndView 一類的東西,前后端分離之后,我們基本上不需要返回頁面了,后端主要是返回 JSON 數(shù)據(jù),所以關(guān)鍵是設(shè)計好各種接口。
一個比較好的實踐方案是設(shè)計滿足 RESTful 規(guī)范的接口,語義明確,簡潔明了,看到 URL 就知道你想干嘛!
開發(fā)流程變化
前后端分離之后,前端不可能等后端開發(fā)好接口之后再去開發(fā),如果這樣,原本兩個月做完的項目可能就得 4 個月才能完成。
一般在開發(fā)之前,整個項目組需要先設(shè)計好一個接口文檔,一般可以采用 Swagger 來做接口文檔(SpringBoot整合Swagger2,再也不用維護接口文檔了!),文檔中約定了接口的詳細信息,前后端分別按照既定的接口規(guī)范去開發(fā),在尚未開發(fā)完成時,可以借助 Mock 來進行測試。
前端也是使用模擬數(shù)據(jù)進行測試,開發(fā)完成之后,前后端接口聯(lián)調(diào),完成測試。
不變其實除了前后端交互方式發(fā)生變化之外,其他的地方都是不變的。
前后端分離,一般來說是不會影響后端技術(shù)架構(gòu)的,你使用了 SSM 或者 Spring Boot 或者 Dubbo 或者微服務(wù),無論什么,這些技術(shù)架構(gòu)既可以支撐你前后端不分的項目,也可以支撐你前后端分離的項目。
因此我說后端技術(shù)架構(gòu)不受前后端分離影響。
另一方面,技術(shù)的根本不變,例如你做 Java 開發(fā),該會的 SSM/SpringBoot/Redis/Nginx/Dubbo/SpringCloud/MySQL/MyCat/ELK/...等等,都還得會。
所以,還是去老老實實擼代碼吧!
結(jié)語如果僅僅從一個 Java 程序員的角度來說,前后端分離開發(fā)這種方式,其實是解放了 Java 程序員,可以讓我們專注于后端的工作,不用再去寫前端代碼,術(shù)業(yè)有專攻,可以寫出更優(yōu)質(zhì)的后端代碼。不過話說回來,如果想保持一個良好的競爭力,還是有必要去了解一下目前流行的前端開發(fā)方式。
前后端分離不是終點,只是軟件開發(fā)方式演變大潮下的一個點而已,未來的路還很長,還有很多東西需要我們?nèi)W(xué)習(xí),這只是一個其中一個而已。
最后再給大家推薦幾篇松哥之前寫的前后端分離的文章:
一個Java程序猿眼中的前后端分離以及Vue.js入門
Spring Boot + Vue 前后端分離,兩種文件上傳方式總結(jié)!
Spring Boot + Vue 前后端分離開發(fā),前端網(wǎng)絡(luò)請求封裝與配置
Spring Boot + Vue 前后端分離開發(fā),權(quán)限管理的一點思路
再推薦兩個入門項目:
微人事
V部落
好了,本文就說到這里,有問題歡迎留言討論。
關(guān)注公眾號【江南一點雨】,專注于 Spring Boot+微服務(wù)以及前后端分離等全棧技術(shù),定期視頻教程分享,關(guān)注后回復(fù) Java ,領(lǐng)取松哥為你精心準備的 Java 干貨!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/75081.html
摘要:點擊訂閱云棲夜讀周刊月日,首屆世界大健康博覽會舉行期間,阿里云宣布其聯(lián)合支付寶共同研發(fā)的區(qū)塊鏈醫(yī)療解決方案已經(jīng)正式應(yīng)用于武漢中心醫(yī)院的電子處方,武漢市中心醫(yī)院也成為首家應(yīng)用該技術(shù)方案的未來醫(yī)院?!军c擊訂閱云棲夜讀周刊】 4月8日,首屆世界大健康博覽會舉行期間,阿里云宣布其聯(lián)合支付寶共同研發(fā)的區(qū)塊鏈醫(yī)療解決方案已經(jīng)正式應(yīng)用于武漢中心醫(yī)院的電子處方,武漢市中心醫(yī)院也成為首家應(yīng)用該技術(shù)方案的未來...
摘要:更詳細的內(nèi)容下一章開篇深入聊聊前后分離講述關(guān)于我目前在寫從零構(gòu)建前后分離項目系列,修正和補充以此為準不斷更新的項目實踐地址彩蛋提前預(yù)覽下一章傳送門 開篇 : 縱觀WEB歷史演變 在校學(xué)習(xí)和幾年工作工作中不知不覺經(jīng)歷了一半的 WEB 歷史演變、對近幾年的發(fā)展比較了解,結(jié)合經(jīng)驗聊聊 WEB 發(fā)展歷史。 演變不易,但也是必然,因為為人始終要進步。 WEB 的發(fā)展史 一、開山鼻祖 - 石器時代...
摘要:更詳細的內(nèi)容下一章開篇深入聊聊前后分離講述關(guān)于我目前在寫從零構(gòu)建前后分離項目系列,修正和補充以此為準不斷更新的項目實踐地址彩蛋提前預(yù)覽下一章傳送門 開篇 : 縱觀WEB歷史演變 在校學(xué)習(xí)和幾年工作工作中不知不覺經(jīng)歷了一半的 WEB 歷史演變、對近幾年的發(fā)展比較了解,結(jié)合經(jīng)驗聊聊 WEB 發(fā)展歷史。 演變不易,但也是必然,因為為人始終要進步。 WEB 的發(fā)展史 一、開山鼻祖 - 石器時代...
摘要:的內(nèi)存分配方式修飾變量通常情況下,變量有個地方可以賦值直接賦值,構(gòu)造函數(shù)中,或是初始化塊中。如就是對于變量,在聲明時,如果你沒有賦值,系統(tǒng)默認這是一個空白域,在構(gòu)造函數(shù)進行初始化,如果是靜態(tài)的,則可以在初始化塊。 【java中為什么會有final變量】: final這個關(guān)鍵字的含義是這是無法改變的或者終態(tài)的; 那么為什么要阻止改變呢? java語言的發(fā)明者可能由于兩個目的而阻止改變: ...
摘要:總結(jié)我覺得,以后基于的全棧式開發(fā)的模式將會越來越流行,這也會引領(lǐng)前端步入工程化時代。歡迎繼續(xù)關(guān)注本博的更新中間層實踐一基于的全棧式開發(fā)中間層實踐二搭建項目框架中間層實踐三配置中間層實踐四模板引擎中間層實踐五中間層的邏輯處理 版權(quán)聲明:更多文章請訪問我的個人站Keyon Y,轉(zhuǎn)載請注明出處。 前言 近期公司有個新項目,由于后端人手不足,我果斷的提議用node中間層的方案,得到了老大的支持...
閱讀 1121·2021-11-18 13:23
閱讀 823·2021-11-08 13:16
閱讀 965·2021-10-11 10:58
閱讀 3577·2021-09-22 15:26
閱讀 1846·2021-09-08 10:42
閱讀 1903·2021-09-04 16:45
閱讀 1806·2019-08-30 15:54
閱讀 2632·2019-08-30 13:45