設(shè)置前綴
有時候我們想把所有的路徑前面都再加入一個級別赌躺,比如原來我們訪問的路徑是http://127.0.0.1:3000/todo卦碾,現(xiàn)在我們希望在所有的路徑前面都加上一個jspang層級,把路徑變成http://127.0.0.1:3000/jspang/todo.這時候就可以使用層級來完成這個功能泞辐。路由在創(chuàng)建的時候是可以指定一個前綴的渴庆,這個前綴會被至于路由的最頂層称鳞,也就是說,這個路由的所有請求都是相對于這個前綴的叁丧。
const router = new Router({
prefix:'/jspang'
})
寫上這句代碼啤誊,這時候你的訪問路徑就加了一個層級jspang∮德Γ可以在瀏覽器中輸入:http://localhost:3000/jspang/todo測試一下蚊锹。
路由層級
設(shè)置前綴一般都是全局的,并不能實(shí)現(xiàn)路由的層級条舔,如果你想為單個頁面設(shè)置層級枫耳,也是很簡單的。只要在use時使用路徑就可以了孟抗。
例如這種寫法裝載路由層級迁杨,這里的router相當(dāng)于父級:router.use(‘/page’, page.routes(), page.allowedMethods())。
通過這種寫法的好處是并不是全局的凄硼,我們可以給不同的路由加層級铅协。
代碼如下:我們聲明了兩個路由,第一個是home,第二個是page.然后通過use賦予不同的前層級摊沉。
const Koa = require('koa');
const app = new Koa();
const Router = require('koa-router');
let home = new Router();
home.get('/jspang',async(ctx)=>{
ctx.body="Home JSPang";
}).get('/todo',async(ctx)=>{
ctx.body ='Home ToDo';
})
let page = new Router();
page.get('/jspang',async(ctx)=>{
ctx.body="Page JSPang";
}).get('/todo',async(ctx)=>{
ctx.body ='Page ToDo';
})
//裝載所有子路由
let router = new Router();
router.use('/home',home.routes(),home.allowedMethods());
router.use('/page',page.routes(),page.allowedMethods());
//加載路由中間件
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000,()=>{
console.log('[demo] server is starting at port 3000');
});