javascript - node做中間層是什么意思,能具體詳說(shuō)么?
問(wèn)題描述
沒(méi)接觸過(guò)node,經(jīng)常看文章說(shuō)node做中間層,不知道具體指什么意思?比如在程序中解決了什么問(wèn)題,如果說(shuō)解決了渲染問(wèn)題,那也是頁(yè)面端,前端框架已經(jīng)解決了,難道說(shuō)是后端渲染前端框架,然后整個(gè)塞到前端嗎?
問(wèn)題解答
回答1:很多項(xiàng)目中后端應(yīng)用往往不止一個(gè)服務(wù),而是一群各司其職的服務(wù),比如nginx的存在就是因?yàn)榉?wù)器上運(yùn)行著多個(gè)服務(wù),而不同的網(wǎng)絡(luò)請(qǐng)求由不同的服務(wù)處理,需要在這些服務(wù)前假設(shè)一層nginx做為代理,將請(qǐng)求分發(fā)給不同的服務(wù),nginx在這里的角色就相當(dāng)于中間層。
對(duì)于一個(gè)比較復(fù)雜的web站點(diǎn),頁(yè)面中的請(qǐng)求通常分為兩種,請(qǐng)求頁(yè)面與請(qǐng)求數(shù)據(jù)(ajax)。如果后端是個(gè)單體應(yīng)用,當(dāng)發(fā)現(xiàn)所有請(qǐng)求量太多應(yīng)付不過(guò)來(lái)的時(shí)候就可以考慮做這樣的分離,將處理頁(yè)面渲染的請(qǐng)求分給另一個(gè)服務(wù),擋在前面,自己只負(fù)責(zé)數(shù)據(jù)相關(guān)的請(qǐng)求。nodejs擅長(zhǎng)處理io密集型任務(wù),很適合做處理頁(yè)面渲染的服務(wù),于是很多人選擇了nodejs。淘寶也是類似的架構(gòu),據(jù)說(shuō)現(xiàn)在所有淘寶的頁(yè)面都是由node服務(wù)渲染的。
回答2:講道理就是用nodejs做靜態(tài)資源管理和請(qǐng)求轉(zhuǎn)發(fā)。做到后端只管數(shù)據(jù)接口,前端負(fù)責(zé)路由,靜態(tài)資源。
回答3:加了node的中間層,可以讓前端處理view層和control層,后端只負(fù)責(zé)處理model層。前后端分離比較徹底,分工更明確一些吧。
另外就是有些框架在服務(wù)器不是node的時(shí)候SEO比較難做。加了node中間層后比較好做SEO
回答4:node就是鏈狀執(zhí)行
請(qǐng)求接收 -> 中間件1 -> 中間件2 -> ... 中間件n ... -> 返回
中間件就是某一個(gè)處理操作
回答5:可以看看淘寶的midway。可以說(shuō)核心概念都有了。
