隨着不一樣終端(Pad/Mobile/PC)的興起,對開發人員的要求愈來愈高,純瀏覽器端的響應式已經不能知足用戶體驗的高要求,每每須要針對不一樣的終端開發定製的版本,爲了提高開發效率,先後端分離的須要愈來愈被重視,後端負責業務/數據接口,前端負責展示、交互邏輯,同一份數據接口,可用於多個終端。html
傳統的先後端:前端
後端是跟數據庫跟服務器打交道的,前端是跟瀏覽器打交道的。但彷佛他們的職責在之前甚至於如今都並不明確,雖然前端是跟瀏覽器打交道,可是最終瀏覽器拿到的頁面是服務器經過模板生成的一個臨時靜態頁面而已。因此,實際上後端也摻和進來了,由於他要處理模板。固然,通常傳統上的開發協做模式有兩種:數據庫
一種是前端先寫一個靜態頁面,寫好後,讓後端去套模板。靜態頁面能夠本地開發,也無需考慮業務邏輯只須要實現View便可。不足是還須要後端套模板,這些前端代碼後端須要瀏覽一遍,以避免出錯。編程
另外一種協做模式是,前端直接去寫模板,這樣作的問題在於,前端編寫過程當中很依賴與後端環境,若是當後端沒寫完的狀況下,前端幾乎無法幹活。json
模板引擎後端
模板引擎是至關古老的東西了,如今能看到的不少後端編程語言其實都是基於模板引擎的。但這種語言級的模板引擎其實很難讓開發者滿意。之前寫 ASP 的時候以爲用程序把數據庫查詢出來的數據填入頁面中是一件很痛苦的事情。不是寫出一堆凌亂的標籤就是程序裏作一堆字符串拼接。若是再考慮上內容的安全性,要作各類過濾和轉義,簡直會讓人奔潰。先後端分離瀏覽器
先後端分離的故事得從 Ajax 提及。在 Ajax 流行起來後,你們都開始了「無刷新」之旅。當時大部分網站都是以連接形式跳轉的時候,本身使用「無刷新翻頁」以爲已經很先進了。後來無刷新翻頁也漸漸開始爛大街,百度搜一下能夠搜出一坨東西,因而就開始考慮全頁面的無刷新操做。漸漸地「Web 接口」這種東西出現,可是此時的「接口」其實主要仍是直接輸出 HTML,並無考慮結構化之類的東西單頁模式安全
單頁模式是先後端分離的一種應用。而單頁應用最主要的特色就是局部刷新,這經過前端控制路由調用AJAX,後臺提供接口即可以實現,並且這樣的方式用戶體驗更加友好,網頁加載更加快速,開發和維護成本也下降了很多,效率明顯提高。