我們遇到了什么問題?
1.前端無法調(diào)試后端未完成的 API:如果后端同學還沒有完成 API 開發(fā),那么前端同學就不能對這個 API 進行開發(fā)。之前我們都是在代碼里直接通過給變量賦假數(shù)據(jù),又或者是在后端 Controller 里直接 return JSON 的方式來進行調(diào)試的。這樣的方式很容易會出現(xiàn)的情況就是,每次提交 commit 都要把它刪除掉,有時忘了沒有刪除掉,那么提交歷史就會變得很臟。
2.沒有自動化測試:前端對接口的調(diào)用沒有做自動化的測試。
3.前端需要依賴后端開發(fā)環(huán)境:前端需要后端環(huán)境來在本地測試,像我們使用的方案就是 Vagrant + 虛擬機的來開發(fā)。這樣的方式其實很笨重,不但每次啟動虛擬機都得等一段時間,而且會占用一定的 CPU 和內(nèi)存資源,拖慢機器。然而,前端需要的只是數(shù)據(jù)。
如何去解決這些問題? ——前后端分離
大部分的互聯(lián)網(wǎng)公司都分成了前端團隊和后端團隊。在軟件設計中,我們有一個思想就是 Separation of Concerns (Soc),也就是 關注點分離 的思想。既然我們采用了前后端由不同團隊開發(fā)的模式,那么我們應該有分治的思想,也就是說,我們要盡可能更多地關注自己從事的領域。
一.為什么要前后端分離?
1.框架層面
前后端倉庫的分離:
整個前端工程使用git subtree從后端Git工程中切分出來。后端應用均使用同一個前端代碼庫。前端只clone前端代碼,啟動前端工程。前端使用sever來mock數(shù)據(jù)渲染ftl模板以及頁面展示
2.開發(fā)層面
前后端約定好接口,各自開發(fā);節(jié)約時間(但聯(lián)調(diào)的時間可能增加),接口有更新及時溝通