先後端邏輯混合開發模式:html
優勢:
1. 用戶體驗好,在相同的網絡條件和業務複雜度以及硬件環境下,他能夠快速進行首屏展現,避免ajax請求所帶來的渲染延時。 2. 有利於seo搜索引擎優化。 3. 方便靜態化,在訪問高峯期能夠將某些訪問量大而且業務數據大部分不變的頁面生成靜態頁面進行緩存,有利於快速渲染。 缺點: 1. 耦合度過高,在協做開發的時候前端的開發人員要與後端的開發人員互相等待來完成總體的功能,並且後端開發人員須要瞭解前端 的頁面結構來填充邏輯代碼,大大下降開發效率而且一旦出問題沒法快速定位問題。 2. 不易維護,因爲對於一個頁面的維護須要牽扯到兩端的開發人員來共同進行維護,在需求變動後容易出現bug。 3. 對後端開發語言進行了強依賴,一旦這兩種語言參雜在一塊兒,對於後端來說前端是沒法複用的。
ajax跨域請求先後端分離模式前端
這種分離模式能夠在必定程度上彌補第一種開發模式的不足。
優勢:
1. 先後端的邏輯不須要混合在一塊兒,兩端的開發人員基本不須要參與對方的代碼,大大提高了總體的開發效率,也方便定位問題。 2. 與第三種開發模式相比較,前端人員不須要關注中間服務器的代碼編寫,從必定程度上減小了工做量。 3. 在部署方面先後端能夠分別部署,從必定程度上提高了前端的價值。 缺點: 1. 首屏局部板塊的渲染須要等到ajax請求數據返回後才能進行徹底的展現,在網絡比較慢的狀況下表現的尤其明顯。 2. 在性能方面ajax請求的暴漲,會影響渲染性能。 3. 異步請求的嵌套會讓業務代碼晦澀難懂。 4. 不利於搜索引擎優化。 5. 須要對請求的異常狀況進行視圖邏輯的處理。
nodejs先後端分離模式vue
這也是我目前很是推崇的一種分離模式。
優勢:
1. node的異步特性,一個頁面是被幾十個HTML片斷(每一個片斷一個文件)拼裝成,以前PHP同步include這幾十個片斷,必定是串行 的,Node能夠異步,讀文件能夠並行,一旦這些片斷中也包含業務邏輯,異步的優點就很明顯了,真正作到哪一個文件先渲染完就先 輸出顯示。前端機的文件系統越複雜,頁面的組成片斷越多,這種異步的提速效果就越明顯。 2. 前端發揮空間大大提高,能玩的東西變多,例如websocket,前端能夠本身來玩而且在controller層和model層上有更多的發揮 空間,好比在node端本身作靜態數據緩存等。 3. 服務器優點,node自己內置服務器功能,幾行代碼就能夠啓動一個服務器,免去了對apache,wamp等服務器的依賴。 4. 服務端和瀏覽器端公用一種語言下降了學習成本,寫一套代碼即可先後端同時運行。 5. 先後端完全分離,node端只要啓動一個http-proxy進行api請求轉發相似於nginx的代理功能,前端只須要玩轉json就能夠,也 不存在跨域問題。 6. 服務器分別部署,能夠單獨進行優化,也方便node作靜態化。 7. 能夠進行首屏的渲染,目前像vuejs,react均可以在服務端渲染頁面而後輸出靜態html代碼,從而彌補了ajax請求的不足。 缺點: 1. 對於通常前端開發來講,以爲nodejs學習門檻比較高,牽扯到服務端就望而卻步,其實沒什麼學的,很好上手。 2. node的單線程機制在部署的時候須要啓動一個監控進程,在node掛了後能自動重啓,例如在linux上配置一個supervisor。 3. 在node端調試相對比較麻煩,沒有像java那樣的遠程調試機制,開發者通常經過console.log進行調試,固然也能夠是用debug 模式啓動node來進行調試。 4. 對開發人員的編碼能力要求比較高,由於單線程的緣故,因此儘可能避免寫出同步執行的代碼,對於cpu密集型的運算儘可能不要讓 node來作。