Node.js作為中間層的前后端分離
現(xiàn)今,許多公司的老項目都存在這樣一些問題:
* 前端代碼越來越復(fù)雜
* 前后端依舊高度耦合
* 無法良好的支持跨終端
解決方案:
* 前端代碼越來越復(fù)雜妆兑,我們希望盡可能地減少工作量魂拦,開始使用類似MV*的分層結(jié)構(gòu),使前端后分離成為必要搁嗓。
* 前端需要處理更多的工作芯勘,希望有權(quán)操控View,Router(如:SPA的嘗試)
* 各種終端設(shè)備的興起腺逛,需要我們把頁面適配到更多的地方荷愕。
關(guān)于MVC的定義:
MVC是一種設(shè)計模式,它將應(yīng)用劃分為3個部分:數(shù)據(jù)(模型)棍矛、展現(xiàn)層(視圖)和用戶交互(控制器)安疗。換句話說,一個事件的發(fā)生是這樣的過程:
- 用戶和應(yīng)用產(chǎn)生交互够委。
- 控制器的事件處理器被觸發(fā)荐类。
- 控制器從模型中請求數(shù)據(jù),并將其交給視圖茁帽。
- 視圖將數(shù)據(jù)呈現(xiàn)給用戶玉罐。
傳統(tǒng)弊端:
性能問題
- 渲染,取值都在客戶端進(jìn)行脐雪,有性能的問題
- 需要等待資源到齊才能進(jìn)行厌小,會有短暫白屏與閃動
- 在移動設(shè)備低速網(wǎng)路的體驗奇差無比
重用問題
- 模版無法重用,造成維護(hù)上的麻煩與不一致
- 邏輯無法重用战秋,前端的校驗后端仍須在做一次
- 路由無法重用璧亚,前端的路由在后端未必存在
跨終端問題
- 業(yè)務(wù)太靠前,導(dǎo)致不同端重復(fù)實(shí)現(xiàn)
- 邏輯太靠前脂信,造成維護(hù)上的不易
NodeJS作為中間層的全棧開發(fā)方案
有了NodeJS之后癣蟋,前端可以更加專注于視圖層,而讓更多的數(shù)據(jù)邏輯放在Node層處理狰闪。
我們使用Node層:
* 轉(zhuǎn)發(fā)數(shù)據(jù)疯搅,串接服務(wù)
* 路由設(shè)計,控制邏輯
* 渲染頁面埋泵,體驗優(yōu)化
* 中間層帶來的性能問題幔欧,在異步ajax轉(zhuǎn)成同步渲染過程中得到平衡
* 更多的可能