前端開發模式的演進
- 后端渲染頁面: 后端基於模板,結合具體的請求,生成對應的 html 文件給瀏覽器執行
- 前后端的分離: 后端不再寫 HTML,只提供 API 接口返回數據給前端,前端通過 JavaScript 負責界面的渲染和交互,通過 AJAX 異步地和后端交互數據
- 前端的工程化: 前端不再是開發一個個頁面,而是開發一個個組件,並且實現開發的模塊化,組件化,規范化,出現了如 Node.js,React,Angular,Vue,AMD,CommonJS,ES6,Webpack 等技術
- 后端的微服務: 后端微服務化后,不再是一個單獨服務針對前端提供細粒度的接口,而是由多個微服務提供粗粒度的接口,讓前端自己篩選數據
后端微服務化后,前端如何從后端獲取數據呢
- 通過 CORS 跨域訪問多個微服務,獲取數據后前端自己裁剪組合
- 通過統一的 API Gateway 訪問,由 API Gateway 將請求分發給各個微服務,獲取數據后前端自己裁剪組合
- 加一個中間層 BFF (Back-end for Front-end 服務於前端的后端),BFF 的接口設計是專門針對前端設計的,在接受前端的請求后,向各個微服務請求數據,然后組合裁剪,然后將結果返回給前端,前端就可以直接使用
BFF 的優點
- 前后端徹底分離,后端的變化不影響前端,前端的變化也不影響后端,都由 BFF 去適配就可以
- 通常 BFF 由前端團隊自己開發,團隊更容易使 BFF 接口設計適配前端業務,前端測試也更容易,而以往前后端團隊的溝通協作都是很大的成本
- 后端的功能更明確,更獨立,就是提供某種粗粒度的數據即可
BFF 的缺點
- 多一個中間層增加延遲
- 前端增加開發成本,以往只要開發前端即可,現在還要考慮后端的 BFF,要考慮 BFF 的高並發,負載均衡,認證等內容