沒(méi)接觸過(guò)node,常??次恼抡f(shuō)node做中間層,不知道具體指什麼意思?例如在程式中解決了什麼問(wèn)題,如果說(shuō)解決了渲染問(wèn)題,那也是頁(yè)面端,前端框架已經(jīng)解決了,難道說(shuō)是後端渲染前端框架,然後整個(gè)塞到前端嗎?
走同樣的路,發(fā)現(xiàn)不同的人生
很多專案中後端應(yīng)用程式往往不只一個(gè)服務(wù),而是一群各司其職的服務(wù),例如nginx的存在就是因?yàn)樗欧魃线\(yùn)行著多個(gè)服務(wù),而不同的網(wǎng)路請(qǐng)求由不同的服務(wù)處理,需要在這些服務(wù)前假設(shè)一層nginx做為代理,將請(qǐng)求分發(fā)給不同的服務(wù),nginx在這裡的角色就等於中間層。
對(duì)於一個(gè)比較複雜的web站點(diǎn),頁(yè)面中的請(qǐng)求通常分為兩種,請(qǐng)求頁(yè)面與請(qǐng)求資料(ajax)。如果後端是單體應(yīng)用,當(dāng)發(fā)現(xiàn)所有請(qǐng)求量太多應(yīng)付不過(guò)來(lái)的時(shí)候就可以考慮做這樣的分離,將處理頁(yè)面渲染的請(qǐng)求分給另一個(gè)服務(wù),擋在前面,自己只負(fù)責(zé)資料相關(guān)的請(qǐng)求。 nodejs擅長(zhǎng)處理io密集型任務(wù),很適合做處理頁(yè)面渲染的服務(wù),於是很多人選擇了nodejs。淘寶也是類(lèi)似的架構(gòu),據(jù)說(shuō)現(xiàn)在所有淘寶的頁(yè)面都是由node服務(wù)渲染的。
講道理就是用nodejs做靜態(tài)資源管理和請(qǐng)求轉(zhuǎn)送。
做到後端只管資料接口,前端負(fù)責(zé)路由,靜態(tài)資源。
加了node的中間層,可以讓前端處理view層和control層,後端只負(fù)責(zé)處理model層。前後端分離比較徹底,分工更明確一點(diǎn)吧。
另外就是有些框架在伺服器不是node的時(shí)候SEO比較難做。加了node中間層後比較好做SEO
node就是鏈狀執(zhí)行
請(qǐng)求接收 -> 中介軟體1 -> 中介軟體2 -> ... 中介軟體n ... -> 回傳
中介軟體就是某一個(gè)處理操作