先後端分離思考

先後端分離的項目開發策略已經不是什麼新鮮東西了,網上介紹這方面的文章很是多。我本身是在14年的時候接觸到的,對這種開發策略一直愛不釋手,無論新老項目都會首先用先後端分離的思惟先去思考一番。從14年到如今在先後分離上面也實踐了近3年的時間,項目大大小小的也差很少4,5個吧,可是卻歷來沒有一個是本身以爲很滿意的,其中的起因和心酸可能只有本身才能體會了。html

先後端分離是什麼

  1. 「前端」一般指的是,相對來講更接近用戶的一端,例如:APP,網頁、桌面程序等,在現實開發中大部分狀況能夠理解爲「客戶端」;
  2. 「後端」相對來講就更泛化了,能夠理解爲是爲前端提供服務的一端。
  3. 」分離「顧名思義就是將」前端「和」後端進行分開「,可是這裏的分開主要從下面幾個緯度進行分離前端

    1. 架構分離,前端不須要依賴後端架構同時後端也不須要知道前端使用何種架構
    2. 人員分離,前端後端使用的技術相互之間根部不須要相互瞭解徹底能夠在作到透明(固然相互瞭解會更好)
    3. 工做分離,基於項目或者產品的單個功能的橫向進行工做分離,任務劃分更細
    4. 關注點分離,前端偏向用戶,後端偏向系統自己

分離的優缺點(相對於一體化的開發策略)

優勢

很是多,例舉一些比較明顯的node

  1. 後端技術再也不受侷限
    後端能夠根據不一樣的業務場景選擇合適的技術進行實現接口服務,技術和人同樣,什麼都能作的每每不是很精而長期專一某個領域的在處理特定問題的時候就比較又優點,例如ruby,python,nodejs等不少語言都有本身很是擅長的領域。
  2. 團隊扁平化
    這和soa的開發思路代理的好處是同樣的,一個項目20多個系統,若是沒有這種soa是開發思路要想半年內開發完成,給你再多人都沒用。這就像過獨木橋同樣。所以前端分離某種意義上來講又給咱們提供了一座大橋,相對的團隊更扁平化
  3. 下降項目風險提供項目質量
    這種分離讓項目有了更多的切割點下降項目風險,同時由於關注點不同項目的質量會明顯提升
  4. 總體開發效率提高
    大部分時間都只須要使用本身擅長的東西,先後端都很舒服,天然效率就會上來

缺點

與其說缺點,實際上能夠理解爲是在實踐先後端分離的過程當中須要解決的困難和難點python

  1. seo,這是首當其衝的,再不進行附加處理的狀況下seo是沒法知足的
  2. 溝通成本增長,在功能溝通中多了前端這個角色,並且每每是產品、設計、後端多方溝通
  3. 安全,相對於一體化的前端,安全問題更多,最簡單的例子:後端接口基本所有暴露

如何解決前端後端分離帶來的問題

  1. seo,這個問題主要針對前端是web端狀況。致使這個問題的根本是由於國內的搜索引擎不會分析js代碼,所以在基於js實現的頁面就沒法獲得seo的支持,那麼也就是說必須給搜素引擎提升完整的html。解決這個問題並無太好的方式,主要仍是2方面入手web

    1. 使用一體化前端專門爲爬蟲提供一套頁面,只作數據渲染,不作UI/UX
    2. 使用nodejs實現服務器端渲染(爲何選擇是nodejs?)
  2. 安全,傳統的cooike/session也是ok的,只是相似jwt這種認證的方式更好些

總結

先後端分離,值得全部前端去嘗試,雖然累到最後你會本身責備本身:「我這是在幹嘛,明明只要寫寫js效果就完成工做的事情,爲何如今每天加班,還處處找人溝通(產品設計不合理的時候須要溝通下,設計適配沒考慮的時候須要和他討論下,接口偷懶的時候還得看人家心情)」;可是,可是當你真的作了一段時間以後你會又更多的收穫,不只僅是技術層面,更多的是技術設計層面的東西後端

相關文章
相關標籤/搜索