前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Koa框架路由嵌套

Koa框架路由嵌套

作者头像
切图仔
发布2022-09-08 19:09:31
5840
发布2022-09-08 19:09:31
举报
文章被收录于专栏:生如夏花绚烂生如夏花绚烂

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());

实现效果与前面一致

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档