程序開發中:什麼是先後端分離?你搞清楚了嗎?

今天這篇文章來分析一下什麼是先後端分離的相關知識,不少小夥伴不清楚到底什麼是前端,什麼是後端,什麼是先後端分離。在說先後端分離以前,咱們先要弄清楚這幾個概念,你們可能常常聽到前端,後端或者是大前端的一些概念,這些概念是怎麼產生的呢?什麼是前端,什麼是後端,什麼是先後端不分離?只有瞭解了這些,那麼先後端分離你就懂了。php

首先我講一下什麼是前端,在講前端以前我先問你們一個問題,咱們常常提到的JavaScript是前端嗎?用JS寫的程序是前端嗎?仍是說只有前端工程師寫的程序才叫前端?我常提到HTML,CSS這是前端嗎?或者是咱們經常使用的一些APP,或者是一些小程序,這些是前端嗎?那麼大前端又是什麼呢?這些問題拋出來之後,剛開始學習編程的同窗估計都有想放棄學習編程的這種想法了。前端

沒有關係,也沒有你想的那麼複雜。在一般的狀況下,咱們說的這個前端都是指瀏覽器這一端,而瀏覽器這一端一般是用JS來實現的,因此用JS寫大部分的程序都是前端,包括APP,包括小程序和H5等。而當nodeJS出現之後,用nodeJS寫的後臺部分,也會被人歸爲前端,爲了區分以前的前端,給他起了一個名字叫作大前端。可是呢咱們想一下,用這種語言來區分先後端他真的合適嗎?我實際上是持有保留態度的。node

對於先後端的定義,我認爲他不該該是以語言來定義,而是應該以他的運行環境去定義,若是實在服務端器的話,應該被稱爲後端,由於什麼呢?由於你既看不到也摸不着。而運行在客戶端,就應該被稱爲前端,由於你可以看獲得。程序員

咱們再看一下什麼是先後端不分離,在移動互聯出現以前,有一種流行的說法叫作B/S和C/S架構,C/S架構指的就是Client Server,意思就是說在桌面程序上有一個客戶端,而後鏈接遠程的這個服務器端,用socket或者是http來傳輸數據。而B/S架構是什麼呢,就是指的是用經過瀏覽器進行訪問,不須要裝一個客戶端,B/S架構曾經一度被認爲是C/S的替代者,好處是什麼呢?就是它不須要安裝,簡單方便。因此那個時候的寫法就是後端是控制一切的,因此在早期的Web開發過程當中,咱們你們都據說過什麼PHP程序員啊,Java程序員啊或者是asp程序員,你們要乾的活就是「全棧」,也就是說先後端通吃。那麼當時的技術是怎樣的呢?看一下這張圖:web

程序開發中:什麼是先後端分離?你搞清楚了嗎?

一般開發一個web的這種應用程序,可能是以asp,php或者jsp這樣的語言來編寫,項目一般是由多個這種文件構成的,每一個文件當中同時包含了HTML,CSS,JS這樣混編的,系統總體負責處理業務邏輯,控制業面跳轉和向用戶展現業面等。編程

而這個瀏覽器是什麼呢?瀏覽器他是一個翻譯官,他是翻譯程序員寫的代碼給用戶看的,翻譯的過程其實有一個高大上的詞,不少人把他稱之爲渲染。也就是說咱們在日常看到的一些漂亮的這個網頁就是瀏覽器渲染出來的。這個架構的好處是什麼呢?就是簡單便捷。可是這麼作其實有一個明顯的弊端,若是這個頁面複雜一點的話,那這個單頁的代碼就比較恐怖了,少則上千,多則上萬。小程序

因此說在之前的開發過程當中,前端設計師通常只扮演一個切圖的工做,只是簡單地將UI設計師設計出來的原型圖把它編程靜態的HTML業面,好比說業面的交互邏輯,好比說後臺的數據交互,這些工做都是由後臺開發人員來實現的,並且更有可能的是什麼呢,是後端的開發人員直接兼顧前端的對口工做,一邊實現API的接口一邊要開發網頁,兩個相互切換着作。這致使了後臺程序員開發的工做壓力特別大,這樣不只開發效率比較緩慢,並且代碼難以維護。而咱們講的先後端分離的話下面來看一下這張圖片:
程序開發中:什麼是先後端分離?你搞清楚了嗎?
先後端分離除了解決分工不均的這個問題以外,主要是將更多的交互的這個邏輯分配給前端來處理,然後端能夠專一於本職的工做,好比說API接口,或者是進行權限控制,或者是進行運算這些都交給後端。那麼前端就能夠獨立完成與用戶交互的這樣一個過程,在先後端分離的這個應用模式當中,後端僅返回前端所須要的這樣的一個過程,不須要渲染HTML業面和控制前端的這樣一個效果。後端

至於說用戶看到什麼樣的效果呢,從後端請求的數據展示都是後端經過異步接口,不如說經過AJA/JSON這種方式提供的,前端只管展示,可是呢你不要覺得只是在敲代碼的這個時候把前端和後端進行分開就是先後端分離了。它完全是解放了前端,前端不須要在向後臺提供模板,或者是後臺無需再前端HTML中嵌入後臺的代碼,二者能夠同時開工,不須要相互依賴,使得這樣的開發效率大大的提升。瀏覽器

相關文章
相關標籤/搜索