前后端的分離與不分離
隨着不同終端的興起,對開發人員的要求越來越高,純瀏覽器端的響應式已經不能滿足用戶體驗的高要求,我們往往需要針對不同的終端開發定制的版本,為了提升開發效率,前后端分離的需求越來越被重視,前端主要負責頁面的展現和交互邏輯,后端主要負責業務和數據接口,同一份數據接口,我們可以定制開發多個版本。
前后端不分離:
在之前的開發方法,php代碼寫在HTML中,不存在純粹的PHP文件和HTML文件,這就是前后端的不分離,也就是php和HTML你中有我我中有你,而在前后端不分離的應用模式中,前端頁面看到的都是由后端控制,由后端渲染頁面或者重定向,也就是后端需要控制前端的展示,前端與后端的耦合度很高,請求的數據交互如下圖:
例如:
1、前端工程師對php代碼讀不懂,php工程師對css等內容也不熟悉。
2、開發效率會大大降低,比如前端寫好靜態demo,后端翻譯成VM模板,也比如直接基於后端環境的開發,那樣配置和安裝使用都很麻煩,而且前端還是要寫VM,依賴后端數據,效率依然不高。
3、前端能力發揮收到局限,比如性能優化,如果性能優化只在前端做空間非常有限,於是我們經常要與后端合作,但是由於后端的框架限制,我們很難來優化性能。
最后,發現只有做到真正的前后端分離,才能夠真正的徹底的解決以上的問題。所以后來就有了前后端分離。
前后端分離:
前端:負責View(視圖層/做HTML頁面的展示)和Controller(邏輯層/書寫業務邏輯)層。
后端:負責Model(數據層/數據的增刪改查)層。
在前后端分離的應用模式中,后端僅返回前端所需的數據,不在渲染HTML頁面,不再控制前端的效果,用戶看到什么樣的效果,從后端請求的數據如何加載到前端中,都由前端自己決定,后端僅僅需要提供一套邏輯對外提供數據即可,並且前端與后端的耦合度相對較低,在這種模式中,我們通常將后端開發的每個視圖都成為一個接口,或者API,前端通過訪問接口來對數據進行增刪改查。
對應的數據交互如下圖:
前后端分離的好處是什么?
1、為優質產品打造精益團隊
術業有專攻,通過前后端分離,讓前后端工程師只需要專注於前端或者后端的開發工作,培養前端工程師獨特的技術特性,然后構建出一個全棧式的精益開發團隊。
2、提高工作效率,分工更加明確
前后端分離的工作流程可以使得前端專心前端,后端關心后端,兩者開發同時進行,提高工作效率,頁面的增加和路由的修改也不必再去麻煩后端,開發更加靈活。
3、局部性能提升
通過前端路由的配置,我們可以實現頁面的按需加載,無序一開始加載首頁便加載網站的所有資源,服務器也不再需要解析前端頁面,在頁面交互及用戶體驗上有所提升。
4、增強代碼的可維護性
前后端分離后,應用的代碼不再是前后端混合,只有在運行期才會調用依賴關系,並且分層明確,應用代碼變得整潔清晰。
最后:
總的簡單來說:前后端分離主要就是將數據操作和顯示分離分離出來,前端專注做數據顯示,通過文字、圖片或者圖標等方式讓數據顯示出來,后端專注的做數據的操作。
前端把數據發給后端,然后后端對數據進行修改。
而后端提供接口給前端調用,來觸發后端對數據的操作。