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