聽說前後端分離是為了讓前端人員專註前端,後端人員專註後端,但如果項目比較簡單,並且總共也就幾個人在開發,前後端分離還有意義嗎?


If all you have is a hammer, everything looks like a nail

如果手裡只有鎚子,看見什麼都是釘子。

一個人或團隊熟悉什麼,往往就用熟悉的技術解決所有問題。不管是大型項目還是小型項目,熟悉程度一定會戰勝架構合理性。

就像B/S架構還沒有普及的年代,會有很多人問這個問題:小項目需要採用B/S結構嗎?因為他們熟悉PB、VB。

只熟悉PHP的人同樣會問:小項目有必要上J2EE嗎?而熟悉J2EE的人,哪怕只有一個JSP頁面的小項目也不會用PHP。

只熟悉JSP和Servlet的人同樣會問:小項目有必要上Spring嗎?而熟悉Spring的人,哪怕項目再小也不打算自己寫Servlet。

只熟悉Spring的人同樣會問:小項目有必要用Weblogic嗎?而熟悉Weblogic的人,哪怕就作一個小的門戶網站,也不會考慮用Spring。

只熟悉JS的人同樣會問:小項目有必要用Typescript嗎?而熟悉Typescript的人,哪怕寫一個最簡單的Demo也不會用JS。

多學習,多實踐,別讓自己手裡只攥著一把鎚子。就像現在的貿易戰,我方說了:我們工具箱裏的工具非常多,足以應付關稅帶來的壓力。這樣才能應付各種架構需要,靈活選擇工具,自由組合工具。


要要要

前端建議使用ORM,否則寫的麵條程序,不方便管理維護

前後端分離後,可以先寫前端再寫後端,實現依賴倒置,開發速度更快

基於json通信協議編程優於基於設計模式,設計模式依賴於設計語言和平臺,json不會有依賴。

電子郵件,dns,http,web,這些都是協議,生命力很強,可以脫離伺服器具體實現。

前端如同電子郵件客戶端像outlook,foxmail這種,隨便換,後端如同電子郵件伺服器,也可以隨便換不同的語言開發,可以是java也可以是python開發的,完全靠電子郵件協議來解耦。


隨著不同終端的興起,對開發人員的要求越來越高,純瀏覽器端的響應式已經不能滿足用戶體驗的高要求,我們往往需要針對不同的終端開發定製的版本,為了提升開發效率,前後端分離的需求越來越被重視,前端主要負責頁面的展現和交互邏輯,後端主要負責業務和數據介面,同一份數據介面,我們可以定製開發多個版本。

前後端不分離:

在之前的開發方法,php代碼寫在HTML中,不存在純粹的PHP文件和HTML文件,這就是前後端的不分離,也就是php和HTML你中有我我中有你,而在前後端不分離的應用模式中,前端頁面看到的都是由後端控制,由後端渲染頁面或者重定向,也就是後端需要控制前端的展示,前端與後端的耦合度很高,請求的數據交互如下圖:

例如:

  • 前端工程師對php代碼讀不懂,php工程師對css等內容也不熟悉。
  • 開發效率會大大降低,比如前端寫好靜態demo,後端翻譯成VM模板,也比如直接基於後端環境的開發,那樣配置和安裝使用都很麻煩,而且前端還是要寫VM,依賴後端數據,效率依然不高。
  • 前端能力發揮收到侷限,比如性能優化,如果性能優化只在前端做空間非常有限,於是我們經常要與後端合作,但是由於後端的框架限制,我們很難來優化性能。

最後,發現只有做到真正的前後端分離,纔能夠真正的徹底的解決以上的問題。所以後來就有了前後端分離。

前後端分離:

前端:負責View(視圖層/做HTML頁面的展示)和Controller(邏輯層/書寫業務邏輯)層。

後端:負責Model(數據層/數據的增刪改查)層。

在前後端分離的應用模式中,後端僅返回前端所需的數據,不在渲染HTML頁面,不再控制前端的效果,用戶看到什麼樣的效果,從後端請求的數據如何載入到前端中,都由前端自己決定,後端僅僅需要提供一套邏輯對外提供數據即可,並且前端與後端的耦合度相對較低,在這種模式中,我們通常將後端開發的每個視圖都成為一個介面,或者API,前端通過訪問介面來對數據進行增刪改查。

對應的數據交互如下圖:

前後端分離的好處是什麼?

1、為優質產品打造精益團隊

術業有專攻,通過前後端分離,讓前後端工程師只需要專註於前端或者後端的開發工作,培養前端工程師獨特的技術特性,然後構建出一個全棧式的精益開發團隊。

2、提高工作效率,分工更加明確

前後端分離的工作流程可以使得前端專心前端,後端關心後端,兩者開發同時進行,提高工作效率,頁面的增加和路由的修改也不必再去麻煩後端,開發更加靈活。

3、局部性能提升

通過前端路由的配置,我們可以實現頁面的按需載入,無序一開始載入首頁便載入網站的所有資源,伺服器也不再需要解析前端頁面,在頁面交互及用戶體驗上有所提升。

4、增強代碼的可維護性

前後端分離後,應用的代碼不再是前後端混合,只有在運行期才會調用依賴關係,並且分層明確,應用代碼變得整潔清晰。

最後:

總的簡單來說:前後端分離主要就是將數據操作和顯示分離分離出來,前端專註做數據顯示,通過文字、圖片或者圖標等方式讓數據顯示出來,後端專註的做數據的操作。

前端把數據發給後端,然後後端對數據進行修改。而後端提供介面給前端調用,來觸發後端對數據的操作。

原文鏈接:https://www.cnblogs.com/-Bloom/p/10260824.html


等你項目上規模了就知道前後端分離有沒有意義了

前後端不分離,全部後端渲染,每一次請求都要服務端生成一次頁面,把整個dom傳給前端,這個體驗爆卡無比

而且前後端不解耦,你維護怎麼辦?

前後端代碼寫在一起的屎一樣的代碼,跪著求我維護都不好使


我現在做的項目,一共就兩三個頁面,工期五天,就這樣一個小項目,我把服務端,後臺管理,前臺h5,分成三個項目

感受就是,太TM爽了,自從上一年某次項目嘗試前後端分離後,就再也回不去那個前後臺一把梭的時代了


推薦閱讀:
相關文章