Express 中間件原理,就這?
今天在搞 express 的時(shí)候,用到了中間件函數(shù)。至于它的概念和使用技巧,我們就不提了。我只是對(duì)這個(gè)中間件函數(shù)內(nèi)部的結(jié)構(gòu)很感興趣。所以今天就和大家一起聊聊這個(gè)中間件函數(shù)的原理。
使用技巧
在使用中間件函數(shù)的時(shí)候,有兩個(gè)地方我們需要注意:一個(gè)是 app.use() 添加一個(gè)中間件函數(shù),一個(gè)是回調(diào)函數(shù)中的 next() 這種特有的標(biāo)志,它的意思很簡(jiǎn)單就是代表下一個(gè)中間件函數(shù)執(zhí)行。
思路分析
通過(guò)使用之后,我們大致能明白,內(nèi)部有個(gè)存放中間件函數(shù)的東西,并且這是個(gè)數(shù)組。所以我們就簡(jiǎn)單實(shí)現(xiàn)一下這個(gè)過(guò)程。
在 express 中都是通過(guò) callback 回調(diào)函數(shù)去執(zhí)行中間件函數(shù),我們這里就簡(jiǎn)單模擬一個(gè) compose 函數(shù),實(shí)現(xiàn)所有中間件函數(shù)的調(diào)用。
fnmiddle() 執(zhí)行就是調(diào)用 compose 的返回函數(shù),它里面要對(duì) middleware 數(shù)組中的所有函數(shù)處理,在這個(gè)返回函數(shù)內(nèi),我們使用遞歸的方式來(lái)實(shí)現(xiàn)一下這個(gè)流程。
這樣一個(gè)中間件函數(shù)的大致原理就出來(lái)了,整體理解起來(lái)還是比較簡(jiǎn)單的,不過(guò)中間件思想在 web 的覆蓋范圍還是很廣的,你能列舉出來(lái)并寫出大致的思路嗎.