背景
傳統(tǒng)的Web前后端開發(fā)大多是前端將頁面(HTML丶CSS丶JS)寫好,之后丟給后端,讓后端將頁面集成到項目中去。站在開發(fā)的角度上看,對于后端來說,不僅要寫后端邏輯,還得集成前端頁面,而對于前端來說,不容易看到頁面的真正渲染出來的樣子;站在維護的角度上看,如果是在業(yè)務(wù)邏輯復雜的項目里,最怕維護的就是前后端混雜在一起的代碼,因為沒有約束,M-V-C每一層都可能出現(xiàn)別的層的代碼,日積月累,完全沒有維護性可言。
傳統(tǒng)開發(fā)模式的劣勢和不足:
開發(fā)出的軟件響應(yīng)速度慢,質(zhì)量差,用戶體現(xiàn)差。
前后端嚴重耦合,代碼混亂,可維護性差。
研發(fā)人員前后端兼顧,開發(fā)效率低下,研發(fā)周期變長
為了解決傳統(tǒng)開發(fā)模式中的這些病痛,前后端分離的思想便應(yīng)運而生。

前后端分離
在前后端分離的開發(fā)模式中,前后端根據(jù)AJAX接口進行數(shù)據(jù)的交互,目前常見的是后端直接將數(shù)據(jù)以JSON的格式返回給前端,前端根據(jù)后端服務(wù)器返回的數(shù)據(jù),操作DOM。后端僅返回前端所需的數(shù)據(jù),前端負責渲染HTML頁面,后端不再控制前端的效果,用戶看到什么樣的效果,從后端請求的數(shù)據(jù)如何加載到前端中,都由前端自己決定,后端僅僅需要提供一套邏輯對外提供數(shù)據(jù)即可,并且前端與后端的耦合度相對較低,在這種模式中,我們通常將后端開發(fā)的每個視圖都成為一個接口,或者API,前端通過訪問接口來對數(shù)據(jù)進行增刪改查??偨Y(jié)一句話,后臺負責提供數(shù)據(jù),前端負責數(shù)據(jù)展示,職責分離,分工明確。
前后端分離開發(fā)的好處:
分工明確,前后端各司其職,后端專注業(yè)務(wù)邏輯和功能的實現(xiàn),前端專注頁面設(shè)計。
前后端并行開發(fā),效率大大提高,頁面的增加和路由的修改也不必再去麻煩后端,開發(fā)更加靈活。
一定程度上減少了前后端的溝通成本撕逼
增強代碼的可維護性,應(yīng)用的代碼不再是前后端混合,只有在運行期才會調(diào)用依賴關(guān)系,并且分層明確,應(yīng)用代碼變得整潔清晰
降低服務(wù)器負載,系統(tǒng)性能提升,通過前端路由的配置,我們可以實現(xiàn)頁面的按需加載,無需一開始加載首頁便加載網(wǎng)站的所有資源,服務(wù)器也不再需要解析前端頁面,在頁面交互及用戶體驗上有所提升
