以Java?Web項(xiàng)目為例淺談前后端分離開發(fā)模式
為什么要前后端分離?
以Java Web項(xiàng)目為例,在傳統(tǒng)的開發(fā)模式中,前端代碼(Html、js、css)寫在JSP中,甚至JSP中嵌入Java代碼。當(dāng)用戶訪問網(wǎng)站時,頁面數(shù)據(jù)也就是Html文檔,由Servlet容器將jsp編譯成Servlet,然后將jsp中的html,css,js代碼輸出到瀏覽器,這個過程需要經(jīng)過很多步驟,才能響應(yīng)用戶的請求。這個過程非常繁瑣,效率低下,直接造成了頁面響應(yīng)速度慢的效果。從項(xiàng)目維護(hù)的角度上,傳統(tǒng)的開發(fā)模式,前端代碼和后端代碼耦合在一起,導(dǎo)致代碼混亂不堪,極大的降低了項(xiàng)目的可維護(hù)性,增加了維護(hù)成本。從開發(fā)角度來看,研發(fā)人員在開發(fā)過程中,不僅要設(shè)計(jì)后端架構(gòu)還要兼顧前端展示,導(dǎo)致開發(fā)效率低下,延長開發(fā)周期。揚(yáng)長避短,為什么不讓專業(yè)的人去做專業(yè)的事?
傳統(tǒng)的開發(fā)模式下的系統(tǒng)數(shù)據(jù)交互圖:
傳統(tǒng)開發(fā)模式的劣勢和不足:
- 開發(fā)出的軟件響應(yīng)速度慢,質(zhì)量差,用戶體現(xiàn)差。
- 前后端嚴(yán)重耦合,代碼混亂,可維護(hù)性差。
- 研發(fā)人員前后端兼顧,開發(fā)效率低下,研發(fā)周期變長。
為了解決傳統(tǒng)開發(fā)模式中的這些病痛,前后端分離框架應(yīng)用而生。
什么是前后端分離?
在前后端分離的開發(fā)模式中,后端僅返回前端所需的數(shù)據(jù),前端負(fù)責(zé)渲染HTML頁面,后端不再控制前端的效果,用戶看到什么樣的效果,從后端請求的數(shù)據(jù)如何加載到前端中,都由前端自己決定,后端僅僅需要提供一套邏輯對外提供數(shù)據(jù)即可,并且前端與后端的耦合度相對較低,在這種模式中,我們通常將后端開發(fā)的每個視圖都成為一個接口,或者API,前端通過訪問接口來對數(shù)據(jù)進(jìn)行增刪改查??偨Y(jié)一句話,后臺負(fù)責(zé)提供數(shù)據(jù),前端負(fù)責(zé)數(shù)據(jù)展示,職責(zé)分離,分工明確。
對應(yīng)的數(shù)據(jù)交互如下圖:
前后端分離的優(yōu)缺點(diǎn)?
為優(yōu)質(zhì)產(chǎn)品打造精益團(tuán)隊(duì):
術(shù)業(yè)有專攻,通過前后端分離,讓前后端工程師只需要專注于前端或者后端的開發(fā)工作,有利于編寫出高質(zhì)量的代碼,培養(yǎng)開發(fā)工程師獨(dú)特的技術(shù)特性,然后構(gòu)建出一個全棧式的精益開發(fā)團(tuán)隊(duì)。
提高工作效率,分工更加明確:
前后端分離的工作流程可以使得前端專心前端,后端關(guān)心后端,兩者開發(fā)同時進(jìn)行,提高開發(fā)效率,頁面的增加和路由的修改也不必再去麻煩后端,開發(fā)更加靈活。
降低服務(wù)器負(fù)載,系統(tǒng)性能提升:
通過前端路由的配置,我們可以實(shí)現(xiàn)頁面的按需加載,無需一開始加載首頁便加載網(wǎng)站的所有資源,服務(wù)器也不再需要解析前端頁面,在頁面交互及用戶體驗(yàn)上有所提升。
增強(qiáng)代碼的可維護(hù)性
前后端分離后,應(yīng)用的代碼不再是前后端混合,只有在運(yùn)行期才會調(diào)用依賴關(guān)系,并且分層明確,應(yīng)用代碼變得整潔清晰。
對于你們的團(tuán)隊(duì)和產(chǎn)品有沒有必要前后端分離?
要回答這個問題,需要從團(tuán)隊(duì)人員分配、人力資源和研發(fā)技能儲備這三個方面出發(fā),進(jìn)行探討決定。 如果團(tuán)隊(duì)人員比較少、人力資源不足,項(xiàng)目不大我覺得沒必要前后端分離。
到此這篇關(guān)于以Java Web項(xiàng)目為例淺談前后端分離開發(fā)模式的文章就介紹到這了,更多相關(guān)Java前后端分離開發(fā)模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Spring Cloud Gateway修改請求和響應(yīng)body的內(nèi)容
這篇文章主要介紹了Spring Cloud Gateway修改請求和響應(yīng)body的內(nèi)容的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-09-09使用@Order控制配置類/AOP/方法/字段的加載順序詳解
這篇文章主要介紹了使用@Order控制配置類/AOP/方法/字段的加載順序詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02FactoryBean?BeanFactory方法使用示例詳解講解
這篇文章主要為大家介紹了FactoryBean?BeanFactory方法使用示例詳解講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12Java多維數(shù)組和Arrays類方法總結(jié)詳解
這篇文章主要介紹了Java多維數(shù)組和Arrays類方法總結(jié)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-03-03利用spring aop實(shí)現(xiàn)動態(tài)代理
這篇文章主要為大家詳細(xì)介紹了利用spring aop實(shí)現(xiàn)動態(tài)代理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03java實(shí)現(xiàn)的漢字轉(zhuǎn)五筆功能實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)的漢字轉(zhuǎn)五筆功能,結(jié)合具體實(shí)例形式分析了java基于字符串遍歷與編碼轉(zhuǎn)換等操作實(shí)現(xiàn)五筆編碼獲取的相關(guān)操作技巧,需要的朋友可以參考下2017-06-06java開發(fā)之spring webflow實(shí)現(xiàn)上傳單個文件及多個文件功能實(shí)例
這篇文章主要介紹了java開發(fā)之spring webflow實(shí)現(xiàn)上傳單個文件及多個文件功能,結(jié)合具體實(shí)例形式分析了spring webflow文件上傳具體操作技巧,需要的朋友可以參考下2017-11-11