假设做一个这样的路由:
/ 前台
/user
/news
/admin 后台
/admin/banners
/admin/list
/admin/login
const Koa = require("koa");
const Router = require("koa-router");
let server = new Koa();
let router = new Router();
server.listen(8000);
// 负责前台路由
let router_www = new Router();
router_www.get('/user', async ctx=>{
ctx.body = 'user_前台'
})
router_www.get('/news', async ctx=>{
ctx.body = 'news_前台'
})
router.use('', router_www.routes()); // 因为"router_www"不是处理函数,所以加入router的中间件
// 路由与路径之间的连接关系是”/“,所有不能带"/"
// '/' + '/user' = '//user'
// 负责后台路由
let router_admin = new Router();
router_admin.get('/banners', async ctx=>{
ctx.body = "banner_后台"
})
router_admin.get('/list', async ctx=>{
ctx.body = "list_后台"
console.log(111)
})
router.use('/admin', router_admin.routes());// 因为"router_admin"不是处理函数,所以加入router的中间件
// 这里加”/“是因为父级是/admin
// '/admin' + '/banners' = '/admin/banners'
server.use(router.routes());
写成模块化:
前台模块www:
// 负责前台路由
const Router = require("koa-router");
let router = new Router();
router.get('/user', async ctx=>{
ctx.body = 'user_前台'
})
router.get('/news', async ctx=>{
ctx.body = 'news_前台'
})
module.exports=router.routes();
后台模块admin:
// 负责后台路由
const Router = require("koa-router");
let router = new Router();
router.get('/banners', async ctx=>{
ctx.body = "banner_后台"
})
router.get('/list', async ctx=>{
ctx.body = "list_后台"
})
module.exports = router.routes();
汇聚模块index:
const Router = require("koa-router");
let router = new Router();
// const wwwRouter = require("./router/www"); // 前台路由
// const adminRouter = require("./router/admin"); // 后台路由
// router.use('', wwwRouter);
// router.use('/admin', adminRouter);
// 路由整合
router.use('', require("./www"));
router.use('/admin', require("./admin"));
module.exports = router.routes();
服务器:
const Koa = require("koa");
let server = new Koa();
server.listen(8000);
server.use(require('./router'));
// 自动引入router下的index.js