前後端分離,可以讓各端變得更專注。今天的話題,結合我之前的專案場景,重新思考“前後端”的定義,並討論下《前後端分離,最佳實踐》。
原文地址:前後端分離,最佳實踐
部落格地址:blog.720ui.com/
前後端分離是什麼
我們來回顧下傳統的 MVC 模式,客戶端傳送 AJAX 請求,服務端接受到該請求並返回 JSON 資料返回給客戶端,客戶端解析 JSON 進行頁面渲染。
現在,為了提高開發效率,細化職責,前後端分離的需求越來越被重視,服務端負責業務/資料介面,前端負責展現/互動邏輯。如果將瀏覽器這一端視為前端,而伺服器這一端視為服務端的話,可以將以上的 MVC 模式,進行改造成前後端分離模式。
為什麼需要前後端分離
有了前後端分離模式,前端人員更加關注介面展現/互動邏輯,服務端人員更加關注業務/資料介面,分工明確,職責清晰。
- 前端職責:頁面UI,頁面展示、互動、渲染,使用者體驗等。
- 後端職責:資料儲存,業務邏輯,RESTful 介面,效能、可用性、伸縮性、擴充套件性、安全性等。
此外,當我們的存在多端場景,例如,一個服務端RESTful API,按照這種方式 Web/iOS/Android/PC/U3D 五個前端對於後端來說就無差別了,這是多麼棒的設計啊。
前後端分離,最佳實踐
簡單分離模式
我們採用的方案是 REST 服務這個輕量級的 Web 服務,客戶端傳送 AJAX 呼叫服務端 RESTFul API 介面請求,服務端收到請求後將 JSON 格式的響應結果傳送給客戶端,這樣就完成了一次互動。
服務端渲染模式
這種模式,基本可以滿足我們一般產品的需求。然而,對於需要做SEO的產品,這種方式就有點力不從心了。因為,重要內容都在前端進行非同步組裝,這樣是無法被搜尋引擎收錄的,所以必須要考慮服務端渲染才可以被SEO。
服務端渲染模式,結合我之前的專案場景,列舉兩種方式。
方式一,JSP渲染
通過JSP進行渲染。這個方式,實際上,就是在前端專案中加入Java程式碼,通過JSP作為模板渲染。
方式二,靜態頁渲染
通過FreeMarker生成靜態頁進行渲染。這個方式,需要考慮動靜分離,CDN分發等場景。
Node.js渲染模式
對於上面的方案,存在一個重要的問題,前端人員需要涉及Java技術,無法達到前後端解耦。隨著Node.js技術的普及,我們把渲染的工作從服務端抽出來到前端,明確的前後端職責劃分。
總結
從傳統的 MVC 模式,演變到前後端分離模式,可以讓各端變得更專注。今天的話題,主要簡單介紹了簡單分離模式,JSP渲染模式,靜態頁渲染模式,Node.js渲染模式。
(完)
更多精彩文章,盡在「服務端思維」微信公眾號!