koa框架支持路由嵌套 可以實現類似php laravel框架路由分組功能
我們可以爲某些模塊構建一個路由對象,在這個路由對象上又繼續構建其他子路由對象
如下兩個路由
企業用戶與普通用戶看到的頁面是不相同的
.com/user/company/show
.com/user/admin/show
通過路由嵌套實現
1.創建總路由對象
const koa = require('koa');
const Router=require('koa-router');
let server=new koa();
server.listen(8080);
let router = new Router();//創建一個總路由
2.創建用戶請求路由
let userRouter = new Router();//創建一個用戶路由對象
3.分別創建用戶路由下的子路由 company和admin
let company = new Router();//創建一個企業用戶路由對象
company.get('/show',async ctx=>{
ctx.body = '企業';//企業用戶方法
})
let admin = new Router();//創建個人用戶路由對象
admin.get('/show',async ctx=>{
ctx.body = "個人";//個人路由對象方法
})
4.將子路由添加到User路由
userRouter.use('/company',company.routes());
userRouter.use('/admin',admin.routes());
5.將用戶路由添加到總路由並綁定到server
router.use('/user',userRouter.routes());
server.use(router.routes());//將總路由綁定到服務
6.運行結果
雖然正常運行但所有路由都放在主文件上看起來比較亂,因此我們可以充分利用nodejs的模塊化開發將路由生成一個目錄,在這個目錄下又生成對應模塊的路由目錄在這個模塊路由下實現具體的功能
爲上面路由生成下面結構
//admin.js
const Router = require('koa-router');
let admin = new Router();//創建個人用戶路由對象
admin.get('/show',async ctx=>{
ctx.body = "個人";//個人路由對象方法
})
module.exports=admin.routes();
//company.js
const Router = require('koa-router');
let company = new Router();//創建一個企業用戶路由對象
company.get('/show',async ctx=>{
ctx.body = '企業';//企業用戶方法
})
module.exports=company.routes();
//index.js
const Router = require('koa-router');
let router = new Router();
router.use('/company',require('./company'));
router.use('/admin',require('./admin'));
module.exports=router.routes();
//server.js
const koa = require('koa');
const Router=require('koa-router');
let server=new koa();
server.listen(8080);
let router = new Router();//創建一個總路由
router.use('/user',require('./routers/user'));
server.use(router.routes());
實現效果與前面一致