理解先後端分離

理解先後端分離

[toc]前端

爲何要作先後端分離,它到底有什麼好處?

先後端的分離也實現了先後端架構的分離,帶來的好處有:vue

  • 整個項目的開發權重往前移,實現真正的先後端解藕,動態資源和靜態資源分離,提升了性能和擴展性。jquery

  • 前端靜態化ajax

    • 前端有且僅有靜態內容,再明確些,只有HTML/CSS/JS。
    • 其內容來自於徹底靜態的資源而不須要任何後臺技術進行動態化組裝。
    • 前端內容的運行環境和引擎徹底基於瀏覽器自己。
  • 後端數據化數據庫

    • 後端能夠用任何語言,技術和平臺實現。
    • 遵循一個原則:只提供數據,不提供任何和界面表現有關的內容。
    • 統一API接口,接口徹底能夠共用。
    • 提供的數據能夠用於任何其餘客戶端(如IOS,安卓,PC,微信小程序等)。
    • 經過一些代碼重構,就能夠大量複用接口,提高效率。
  • 平臺無關化小程序

    • 前端3大技術(HTML/CSS/JS)自己就是平臺無關的。
    • 後臺鏈接部分的本質是實現合適的RESTful接口和交互Json數據,就這2者而言,任何技術和平臺均可以實現。
    • 先後端交給不一樣的人來編寫,明確劃分職責,發現bug的時候能夠快速定位。
    • vue.js等框架編寫前端時,會比以前寫jquery更簡單快捷。
  • 架構分離化後端

    • 前端架構徹底基於HTML/CSS的發展和JS框架的演變,因爲前臺是純靜態內容,大型構架方面能夠考慮向CDN方向發展.
    • 後端構架幾乎能夠基於任何語言和平臺的任何解決方案,大型構架方面, RESTful Api能夠考慮負載均衡;而數據,業務實現等能夠考慮數據庫優化和分佈式。
    • 在大併發狀況下,能夠同時水平擴展先後端服務器。
    • 即便後端服務暫時超時或者宕機了,前端頁面也會正常訪問,只不過數據刷不出來而已,固然如今通常是服務器集羣,少有出現這種現象。
  • 先後端流量大幅減小。微信小程序

    • 減小後端服務器的併發壓力,除了接口之外的其餘全部http請求所有轉移到前端服務器上。
    • 頁面再也不是全局刷新,而是異步加載,局部刷新,減輕壓力。
  • 表現性能的提升api

    • 頁面性能,第一次獲取的確會有些損失。
    • 後續使用這個頁面,性能優點就徹底體現了,頁面的絕大部份內容都是本地緩存直接加載,遠程獲取的僅僅是1-2個10K的內容,其加載時間百毫秒內,這和本地頁面幾無區別,其前端加載和響應速度獲得很是大的提升。
  • 安全性方面的集中優化瀏覽器

    • 前端靜態化之後,一些注入式攻擊在分離模式下被很好的規避。
    • 然後端安全問題集中化了,主要考慮處理RESEful接口的安全。
    • 安全架設和集中優化變得更明確和便利。

實現的一些表現

  • 先後端人員雙方約定好接口的數據格式,
  • 好比:前端須要調用一個用戶信息的接口,數據格式爲{name:"tielemao"}。那麼,後端人員只須要告訴他一個接口url(如:http://www.tielemao.com/api/userInfo),而且將這個接口返回前端想要的數據便可,至於後端人員怎麼實現這個接口,前端人員並不關心!
  • 前端頁面用ajax解析url,獲取數據進行頁面端的處理,而後再按照上述地址返回給後端。
  • 前端人員要用這個接口來作什麼,後端人員一樣不須要關心!雙方都只專一於本身須要實現的業務邏輯。

RESTful風格的API

RESTful風格的API是先後端分離的最佳實踐。

  • RESTful推薦每一個URL能操做具體的資源。
  • 能準確描述服務器對資源的處理動做。
  • 一般服務器對資源支持get/post/put/delete/等,用來實現資源的增刪改查。
  • 先後端分離的話,這些api-url是對接的橋樑,採用restful接口地址,含義才更清晰、見名知意。

by:鐵樂與貓

參考: http://www.javashuo.com/article/p-hpevdyvq-ga.html

相關文章
相關標籤/搜索