koa框架支持路由嵌套 可以实现类似php laravel框架路由分组功能 我们可以为某些模块构建一个路由对象,在这个路由对象上又继续构建其他子路由对象
如下两个路由
企业用户与普通用户看到的页面是不相同的 .com/user/company/show
.com/user/admin/show
通过路由嵌套实现
1.创建总路由对象
代码语言:javascript复制const koa = require('koa');
const Router=require('koa-router');
let server=new koa();
server.listen(8080);
let router = new Router();//创建一个总路由
2.创建用户请求路由
代码语言:javascript复制let userRouter = new Router();//创建一个用户路由对象
3.分别创建用户路由下的子路由 company和admin
代码语言:javascript复制let company = new Router();//创建一个企业用户路由对象
company.get('/show',async ctx=>{
ctx.body = '企业';//企业用户方法
})
let admin = new Router();//创建个人用户路由对象
admin.get('/show',async ctx=>{
ctx.body = "个人";//个人路由对象方法
})
4.将子路由添加到User路由
代码语言:javascript复制 userRouter.use('/company',company.routes());
userRouter.use('/admin',admin.routes());
5.将用户路由添加到总路由并绑定到server
代码语言:javascript复制router.use('/user',userRouter.routes());
server.use(router.routes());//将总路由绑定到服务
6.运行结果
虽然正常运行但所有路由都放在主文件上看起来比较乱,因此我们可以充分利用nodejs的模块化开发将路由生成一个目录,在这个目录下又生成对应模块的路由目录在这个模块路由下实现具体的功能
为上面路由生成下面结构
代码语言:javascript复制//admin.js
const Router = require('koa-router');
let admin = new Router();//创建个人用户路由对象
admin.get('/show',async ctx=>{
ctx.body = "个人";//个人路由对象方法
})
module.exports=admin.routes();
代码语言:javascript复制//company.js
const Router = require('koa-router');
let company = new Router();//创建一个企业用户路由对象
company.get('/show',async ctx=>{
ctx.body = '企业';//企业用户方法
})
module.exports=company.routes();
代码语言:javascript复制//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();
代码语言:javascript复制//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());
实现效果与前面一致