動態

詳情 返回 返回

前後端分離,千萬別再搞錯了! - 動態 詳情

你是小阿巴,剛入職的全棧程序員。

所謂全棧,就是 全乾,整個網站項目的後端和前端都由你一個人負責開發。

當用户打開一個網站,能直觀看到、可交互操作的界面,就是前端。

而當用户點擊操作按鈕後,觸發的操作驗證、數據查詢、業務邏輯處理等種種 “看不到” 的操作,都由後端來完成。

 

本文對應視頻版:https://bilibili.com/video/BV1AasqzWEj5

 

你使用的開發技術是比你年齡都大的 JSP,它的特點是把前端 HTML 網頁代碼和後端 Java 代碼混在一起寫。

 

剛開始項目代碼不多的時候,你寫的很舒服。

但隨着項目越做越大,更多同事加入了這個項目的開發,你也漸漸發現了幾個問題。

 

  1. 代碼混亂難維護:前端後端代碼糾纏在一起,不利於閲讀,也不利於排查 Bug。

  2. 團隊協作困難:你在改前端樣式,同事在改後端邏輯,經常改着改着就衝突了。

  3. 人員要求更高:開發人員必須同時學習前端和後端技術,今天寫 CSS 調樣式,明天寫 SQL 查數據庫,根本忙不過來。

  4. 部署效率低下:由於前端後端寫在一起,哪怕改個按鈕顏色都要重新編譯部署整個項目。

 

受這些問題的影響,項目開發效率越來越低,Bug 卻越來越多,你壓力山大、發如雨下。

老闆看出了你毛兒的不易,給公司請來了一位新的技術導師,號稱 “全棧冤種” 的魚皮。

魚皮看了看你的項目,搖了搖頭:連前後端分離都不做麼?

你疑惑地問:前後端分離?沒聽説過。

這時,你的同事阿土申插嘴道:我知道啊!我們現在把前端靜態文件放在 static 文件夾,JSP 代碼放在 jsp 文件夾,這不就是前後端分離嗎?

 

魚皮皺眉:那只是文件夾分離,不是真正的前後端分離。

阿土申不服:魚皮老狗,那你説説用什麼技術才算是前後端分離?

魚皮笑道:前後端分離可不是某種特定的技術,而是一種 架構 思想。

看看你們現在的項目,用户訪問網站時,是由後端服務器接收請求,然後在後端查詢數據並拼接到 HTML 網頁模板中,生成完整的網頁,最後再返回給用户。

 

顯然,後端承受了太多!

而如果改造為前後端分離:

  • 前端專注於用户界面的呈現和交互邏輯

  • 後端專注於數據處理和業務邏輯,不涉及界面代碼和網頁生成

  • 用户在前端進行操作時,前端通過 API 接口 向後端發送請求,由後端處理操作並返回數據給前端,由前端完成數據的最終展示。

 

你不明覺厲:可是這樣做有什麼好處呢?

魚皮指着你之前列出的問題説:前後端分離就是專門解決這些痛點的!

1)首先是 代碼分離:將前端代碼和後端代碼完全分開,最好是 2 個獨立的項目

2)代碼分離後,就可以 開發分離:前端和後端程序員可以同時幹活,互不干擾。

3)還可以 部署分離:前端和後端項目各自獨立部署,後端出了問題或者修改了邏輯,不用重新部署前端。

4)做到前面 3 個分離後,我們便能實現前後端分離的本質 —— 職責分離,專業的人幹專業的事情,各自發揮特長,整體效率自然更高。當然最主要的是,後端出了問題,前端不用背鍋。

 

聽着魚皮滔滔不絕,你雙眼放光:前後端分離這麼厲害,是不是還能提升網站性能呢?

魚皮搖搖頭:不一定,而且有時前後端分離可能更慢!因為用户訪問網站時,瀏覽器需要先加載前端頁面,然後執行 JavaScript 腳本請求後端數據,這比傳統的後端直接返回完整頁面多了一次網絡請求。

 

但是也別灰心,前後端分離後,前端和後端都可以分別進行優化,更靈活。

 

你點了點頭:原來如此,看來前後端分離的主要目的是 提升開發效率和代碼維護性,而不是提升性能。

於是你帶領團隊開始重構項目,前端用 React 框架重寫了整個界面,打包成靜態文件部署到 CDN 加速網絡上;後端則專門提供 API 接口,返回 JSON 數據,部署在獨立的服務器上,互不影響。

幾個月後,你感受到了前後端分離的優勢:

  • 團隊成員各司其職

  • 前端技術靈活選擇

  • 後端服務多端複用

 

雖然前端和後端對接的過程中偶爾會鬥嘴打架,但你也通過自己總結的一套前後端分離的實戰經驗完美解決。

 

你興奮地對魚皮説:前後端分離也太爽了吧!

魚皮笑着問:那我問你,前後端分離一定比不分離更好麼?

你不假思索:那當然了!你看看這盛世豈不如你所願?

魚皮搖搖頭:小阿巴你要記住,沒有最好的架構,只有相對更合適的架構!是否採用前後端分離,要根據團隊項目規模、項目實際需求、團隊技術能力等綜合決定。

你:我明白了,拋開實際場景談架構都是耍流氓~

魚皮:最後問個問題,用了 React 框架一定就是前後端分離麼?

朋友,説説你的看法吧。

 

更多編程學習資源

  • Java前端程序員必做項目實戰教程+畢設網站

  • 程序員免費編程學習交流社區(自學必備)

  • 程序員保姆級求職寫簡歷指南(找工作必備)

  • 程序員免費面試刷題網站工具(找工作必備)

  • 最新Java零基礎入門學習路線 + Java教程

  • 最新Python零基礎入門學習路線 + Python教程

  • 最新前端零基礎入門學習路線 + 前端教程

  • 最新數據結構和算法零基礎入門學習路線 + 算法教程

  • 最新C++零基礎入門學習路線、C++教程

  • 最新數據庫零基礎入門學習路線 + 數據庫教程

  • 最新Redis零基礎入門學習路線 + Redis教程

  • 最新計算機基礎入門學習路線 + 計算機基礎教程

  • 最新小程序入門學習路線 + 小程序開發教程

  • 最新SQL零基礎入門學習路線 + SQL教程

  • 最新Linux零基礎入門學習路線 + Linux教程

  • 最新Git/GitHub零基礎入門學習路線 + Git教程

  • 最新操作系統零基礎入門學習路線 + 操作系統教程

  • 最新計算機網絡零基礎入門學習路線 + 計算機網絡教程

  • 最新設計模式零基礎入門學習路線 + 設計模式教程

  • 最新軟件工程零基礎入門學習路線 + 軟件工程教程https://www.code-nav.cn/post/1640648711119892481

Add a new 評論

Some HTML is okay.