koa2入门--03.koa中间件以及中间件执行流程

//中间件:先访问app的中间件的执行顺序类似嵌套函数,由外到内,再由内到外
//应用级中间件
const koa = require(‘koa‘);
var router = require(‘koa-router‘)();
var app = new koa();

//匹配任意路由之前打印日期
app.use(async (ctx,next)=>{
    console.log(new Date());
    await next();
});
router.get(‘/‘,async (ctx)=>{
    ctx.body = ‘首页‘;
});


//路由级中间件
//匹配到news后继续向下匹配路由
router.get(‘/news‘,async (ctx,next)=>{
    console.log(‘这是一个新闻‘);
    await next();
});
router.get(‘/news‘,async (ctx)=>{
    ctx.body = ‘这是一个新闻‘;
});


//错误处理中间件
app.use(async (ctx,next)=>{
    console.log(‘这是一个中间件01‘);
    next();//先处理中间节
    if(ctx.status == 404){
        ctx.status = 404;
        ctyx.body = ‘这是一个404页面‘;
    }else{
        console.log(ctx.url);
    }
});


app.use(router.routes());
app.use(router.allowedMethods());
app.listen(3000);