轉(zhuǎn):原文鏈接:https://blog.csdn.net/weixin_33237865/article/details/112880840
Node.js是一個Javascript運(yùn)行環(huán)境。Node.js 使用事件驅(qū)動戴涝, 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設(shè)備上運(yùn)行數(shù)據(jù)密集型的實(shí)時應(yīng)用。
node最大的改良架構(gòu)就是‘增加了中間層’邪财,前后端分離,使用node來做‘BBF(backend of frontend)’在傳統(tǒng)后端加入了node這一層质欲,通過此有兩點(diǎn)好處树埠,前端接管了view層,后端渲染也開始全部由前端掌控嘶伟,另一個就是接口層增加了一層怎憋。
在前后端分離的天然選擇下,node中間層可以承擔(dān)更多的責(zé)任奋早。
node中間層可以做以下這些方面的工作:
代理:在開發(fā)環(huán)境下盛霎,我們可以利用代理來,解決最常見的跨域問題耽装;在線上環(huán)境下愤炸,我們可以利用代理,轉(zhuǎn)發(fā)請求到多個服務(wù)端掉奄。
緩存:緩存其實(shí)是更靠近前端的需求规个,用戶的動作觸發(fā)數(shù)據(jù)的更新,node中間層可以直接處理一部分緩存需求姓建。
限流:node中間層诞仓,可以針對接口或者路由做響應(yīng)的限流。
日志:相比其他服務(wù)端語言速兔,node中間層的日志記錄墅拭,能更方便快捷的定位問題(是在瀏覽器端還是服務(wù)端)。
監(jiān)控:擅長高并發(fā)的請求處理涣狗,做監(jiān)控也是合適的選項(xiàng)谍婉。
鑒權(quán):有一個中間層去鑒權(quán),也是一種單一職責(zé)的實(shí)現(xiàn)镀钓。
路由:前端更需要掌握頁面路由的權(quán)限和邏輯穗熬。
服務(wù)端渲染:node中間層的解決方案更靈活,比如SSR丁溅、模板直出唤蔗、利用一些JS庫做預(yù)渲染等等。