爲何要進行先後端分離?

1、認識先後端分離

可能不少人會有誤解,認爲web應用的開發期進行了先後端開發工做的分工就是先後端分離。但其實先後端分離並不僅是開發模式,而是web應用的一種架構模式。在開發階段,先後端工程師約定好數據交互接口,實現並行開發和測試;在運行階段先後端分離模式須要對web應用進行分離部署,先後端以前使用HTTP或者其餘協議進行交互請求。前端

2、爲何要進行先後端分離

在之前傳統的網站開發中,前端通常扮演的只是切圖的工做,只是簡單地將UI設計師提供的原型圖實現成靜態的HTML頁面,而具體的頁面交互邏輯,好比與後臺的數據交互工做等,可能都是由後臺的開發人員來實現的,這也就致使了先後端工做分配不均。這樣作不只僅開發效率慢,代碼也難以維護。而先後端分離的話,則能夠很好的解決先後端分工不均的問題,將更多的交互邏輯分配給前端來處理,然後端則能夠專一於其本職工做,像提供API接口,進行權限控制以及進行運算工做。而前端開發人員則能夠利用nodejs來搭建本身的本地服務器,直接在本地開發,而後經過一些插件來將api請求轉發到後臺,這樣就能夠徹底模擬線上的場景,而且與後臺解耦。前端能夠獨立完成與用戶交互的整一個過程,二者均可以同時開工,不互相依賴,開發效率更快,並且分工比較均衡。node

3、實現先後端分離

先後端分離大概能夠從四個方面來理解:web

 

1.交互形式後端

在先後端分離架構中,後端只須要負責按照約定的數據格式向前端提供可調用的API服務便可。先後端之間經過HTTP請求進行交互,前端獲取到數據後,進行頁面的組裝和渲染,最終返回給瀏覽器。api

  2.代碼組織方式瀏覽器

先後端代碼庫分離,前端代碼中有能夠進行Mock測試(經過構造虛擬測試對 象以簡化測試環境的方法)的僞後端,能支持前端的獨立開發和測試。然後端 代碼中除了功能實現外,還有着詳細的測試用例,以保證API的可用性,下降 集成風險。服務器

  3.開發模式前端工程師

實現先後端分離架構以後,前端工程師只須要編寫HTMLjsCSS等前端資源,而後通 過HTTP請求調用後端提供的服務便可。除了開發期的分離,在運行期先後端資源也 會進行分離部署。先後端分離以後,開發流程將以下圖所示。架構

 

經過上面的流程圖,不難發現,在開發模式上,先後段分離不只僅只是工程師的分工開發,更重要的意義在於實現了先後端的並行開發,簡化了開發流程app

4.數據接口規範流程

在開發期間先後端共同商定好數據接口的交互形式和數據格式。而後實現先後端的並行開發,其中前端工程師再開發完成以後能夠獨自進行mock測試,然後端也可使用接口測試平臺進行接口自測,而後先後端一塊兒進行功能聯調並校驗格式,最終進行自動化測試。

 

4、先後端分離的好處

1. 適配性提高

咱們其實在開發過程當中,常常會給pc端、mobileapp端各自研發一套前端。其實對於這三端來講,大部分端業務邏輯是同樣的。惟一區別就是交互展示邏輯不一樣。若是controller層在後端手裏,後端爲了這些不一樣端頁面展現邏輯,本身維護這些controller,徒增和前端溝通端成本。

2. 響應速度提高

咱們有時候,會遇到後端返回給前端的數據太簡單了,前端須要對這些數據進行邏輯運算。那麼在數據量比較小的時候,對其作運算分組等操做,並沒有影響。可是當數據量大的時候,會有明顯的卡頓效果。這時候,node中間層其實能夠將不少這樣的代碼放入node層處理、也能夠替後端分擔一些簡單的邏輯、又能夠用模板引擎本身掌握前臺的輸出。這樣作靈活度、響應度都大大提高。

3. 性能獲得提高

你們應該都知道單一職責原則。從該角度來看,咱們請求一個頁面,可能要響應不少看後端接口,請求變多了,天然速度就變慢了,這種現象在mobile端更加嚴重。採用node做爲中間層,將頁面所須要的多個後端數據,直接在內網階段就拼裝好,再統一返回給前端,會獲得更好的性能

相關文章
相關標籤/搜索