koa框架會用也會寫 koa router

2021-09-11 14:05:59 字數 2393 閱讀 8927

var koa = require('koa');

var router = require('koa-router');

var router = new router();

router.get('/home',(ctx,next)=>);

router.get('/user', (ctx, next) => );

複製**

var koa = require('koa');

var router = require('koa-router');

var router = new router();

//將路由的處理交給中介軟體

if (ctx.path === '/' && ctx.method === 'get') else

}) if (ctx.path === '/user' && ctx.method === 'get') else

});複製**

從上面可以知道,如果沒有koa-router,其實每個路由使用的koa註冊中介軟體的形式來進行處理的,這樣不利於松耦合和模組化,所以將所有路由的處理邏輯抽離出來組合成乙個大的中介軟體koa-router來處理,最後將大的中介軟體註冊到koa上,如果關於koa中介軟體原理還不了解,可以參考另一篇文章koa框架會用也會寫—(koa的實現)

既然koa-router也是大的中介軟體,裡面擁有許多小的中介軟體,那麼裡面必然也需要用到洋蔥模型,洋蔥模型的特點:

如果對於中介軟體和洋蔥模型有疑問的,可以參考koa框架會用也會寫—(koa的實現)

class router 

}module.exports = router

複製**

class router 

get(path,fn)

//處理類似/article/:id的路由

if(path.includes(':')));

//將返回的字串變成正則,後面解析路由是會用到

layer.reg = new regexp(reg);//返回/\/article\/([^\/]*)/

layer.params = params;

}this.middles.push(layer);

}}module.exports = router

複製**

class router 

get(path,fn)

//處理類似/article/:id的路由

if(path.includes(':')));

//將返回的字串變成正則,後面解析路由是會用到

layer.reg = new regexp(reg);//返回/\/article\/([^\/]*)/

layer.params = params;

}this.middles.push(layer);

}compose(lasts,next,ctx));

//執行路由邏輯,next賦值為下乙個路由邏輯

route.fn(ctx,()=>)

}dispatch(0)

}}module.exports = router

複製**

class router 

get(path,fn)

//處理類似/article/:id的路由

if(path.includes(':')));

//將返回的字串變成正則,後面解析路由是會用到

layer.reg = new regexp(reg);//返回/\/article\/([^\/]*)/

layer.params = params;

}this.middles.push(layer);

}compose(lasts,next,ctx))

}dispatch(0)

}routes

() }

if ((method === route.method || route.method === 'all') && (route.p === pathname || route.p === '*'))

return

false;

});this.compose(lasts, next, ctx);}}}

module.exports = router

複製**

上面的router是簡化版的koa-router,它只實現了koa-router中的一級路由,但是卻是能說明koa-router的主要思想,koa-router中新增了use來註冊二級路由,同時新增了很多包括重定向等其他邏輯處理

koa-router中介軟體的原理基本就介紹完了,後面一起學習kao的其他中介軟體:

C Vector 簡單實現 會用也要會寫

我們知道,記憶體塊的大小是不能改變的,因此陣列的大小不能改變。但是stl的vector讓我們擺脫了這種困擾,它可以幫我們動態的管理陣列的大小。誠然,stl的vector底層還是通過動態陣列來實現的,當陣列大小不夠時,就申請一塊更大的記憶體,同時將原來的元素的值拷貝過去,再刪掉原來那塊小記憶體,當然這...

opencv學了你也不會寫筆記

opencv 結構與內容 cv 基本的圖形處理函式和高階的計算機視覺演算法 ml 機器學習庫 包含基於統計的分類和聚類工具 輸出的函式 cxcore 包含 opencv 的一些基本資料結構和相關函式 顯示影象 include highgui.h int main int argc,char argv...

沒想到我也會用唇膏

相信大多數男同胞對化妝品不會有什麼好感,尤其是有女朋友的男同胞 我就如此,總感覺化妝品只會破壞 雖然能讓你擁有暫時的美麗,卻不能讓你得到永恆的青春.但直到最近發生了一件事,我才稍稍改變了一下自己對化妝品的態度 春節回來後就一直身體不適,連續乙個禮拜發燒,頭痛,嗓子疼,流鼻涕.我從來不生病的,多少年連...