背景
傳統(tǒng)的Web前后端開發(fā)大多是前端將頁面(HTML丶CSS丶JS)寫好,之后丟給后端针饥,讓后端將頁面集成到項目中去耐齐。站在開發(fā)的角度上看浪秘,對于后端來說蒋情,不僅要寫后端邏輯埠况,還得集成前端頁面,而對于前端來說棵癣,不容易看到頁面的真正渲染出來的樣子辕翰;站在維護的角度上看,如果是在業(yè)務邏輯復雜的項目里狈谊,最怕維護的就是前后端混雜在一起的代碼喜命,因為沒有約束,M-V-C每一層都可能出現(xiàn)別的層的代碼河劝,日積月累壁榕,完全沒有維護性可言。
傳統(tǒng)開發(fā)模式的劣勢和不足:
開發(fā)出的軟件響應速度慢赎瞎,質(zhì)量差牌里,用戶體現(xiàn)差。
前后端嚴重耦合务甥,代碼混亂牡辽,可維護性差。
研發(fā)人員前后端兼顧敞临,開發(fā)效率低下态辛,研發(fā)周期變長
為了解決傳統(tǒng)開發(fā)模式中的這些病痛,前后端分離的思想便應運而生挺尿。
前后端分離
在前后端分離的開發(fā)模式中奏黑,前后端根據(jù)AJAX接口進行數(shù)據(jù)的交互炊邦,目前常見的是后端直接將數(shù)據(jù)以JSON的格式返回給前端,前端根據(jù)后端服務器返回的數(shù)據(jù)攀涵,操作DOM铣耘。后端僅返回前端所需的數(shù)據(jù),前端負責渲染HTML頁面以故,后端不再控制前端的效果蜗细,用戶看到什么樣的效果,從后端請求的數(shù)據(jù)如何加載到前端中怒详,都由前端自己決定炉媒,后端僅僅需要提供一套邏輯對外提供數(shù)據(jù)即可,并且前端與后端的耦合度相對較低昆烁,在這種模式中吊骤,我們通常將后端開發(fā)的每個視圖都成為一個接口,或者API静尼,前端通過訪問接口來對數(shù)據(jù)進行增刪改查白粉。總結(jié)一句話鼠渺,后臺負責提供數(shù)據(jù)鸭巴,前端負責數(shù)據(jù)展示,職責分離拦盹,分工明確鹃祖。
前后端分離開發(fā)的好處:
分工明確,前后端各司其職普舆,后端專注業(yè)務邏輯和功能的實現(xiàn)恬口,前端專注頁面設計。
前后端并行開發(fā)沼侣,效率大大提高祖能,頁面的增加和路由的修改也不必再去麻煩后端,開發(fā)更加靈活蛾洛。
一定程度上減少了前后端的溝通成本撕逼
增強代碼的可維護性养铸,應用的代碼不再是前后端混合,只有在運行期才會調(diào)用依賴關系雅潭,并且分層明確揭厚,應用代碼變得整潔清晰
降低服務器負載,系統(tǒng)性能提升扶供,通過前端路由的配置筛圆,我們可以實現(xiàn)頁面的按需加載,無需一開始加載首頁便加載網(wǎng)站的所有資源椿浓,服務器也不再需要解析前端頁面太援,在頁面交互及用戶體驗上有所提升