zoukankan      html  css  js  c++  java
  • 详解express与koa中间件执行顺序模式分析

    //引入 koa模块
    
    var Koa=require('koa');
    var router = require('koa-router')();  /*引入是实例化路由** 推荐*/
    var app=new Koa();
    
    //Koa中间件
    
    //匹配任何路由  ,如果不写next,这个路由被匹配到了就不会继续向下匹配
    
    //www.域名.com/news
    app.use(async (ctx,next)=>{
        console.log('1、koa这是第一个中间件');
        await next();
    
        console.log('5、koa匹配路由完成以后又会返回来执行中间件');
    })
    app.use(async (ctx,next)=>{
        console.log('2、koa这是第二个中间件');
        await next();
    
        console.log('4、koa匹配路由完成以后又会返回来执行中间件');
    })
    
    app.use(async (ctx,next)=>{
        console.log('koa这是一个中间件');
        next();
    
        if(ctx.status==404){   /*如果页面找不到*/
            ctx.status = 404;
            ctx.body="这是一个 404 页面"
            console.log('6、404页面');
        }else{
            console.log(ctx.url);
            console.log('7、koa匹配路由');
        }
    })
    
    
    
    router.get('/',async (ctx)=>{
    
        ctx.body="首页koa";
    
    })
    router.get('/news',async (ctx)=>{
    
        console.log('3、koa匹配到了news这个路由');
        ctx.body='koa新闻';
    })
    
    
    app.use(router.routes());   /*启动路由*/
    app.use(router.allowedMethods());
    app.listen(3002);
    
    
    /*
    访问:127.0.0.1/3002
    * 1、koa这是第一个中间件
    2、koa这是第二个中间件
    koa这是一个中间件
    /
    4、koa匹配路由完成以后又会返回来执行中间件
    5、koa匹配路由完成以后又会返回来执行中间件
    
    访问:127.0.0.1/3002/xxx
    1、koa这是第一个中间件
    2、koa这是第二个中间件
    koa这是一个中间件
    6、404页面
    4、koa匹配路由完成以后又会返回来执行中间件
    5、koa匹配路由完成以后又会返回来执行中间件
    访问:127.0.0.1/3002/news
    1、koa这是第一个中间件
    2、koa这是第二个中间件
    koa这是一个中间件
    3、koa匹配到了news这个路由
    /news
    7、koa匹配路由
    4、koa匹配路由完成以后又会返回来执行中间件
    5、koa匹配路由完成以后又会返回来执行中间件
    
    * */
    /**
     路由中间件
     */
    
    
    var express=require('express'); /*引入*/
    
    var app=new express();  /*实例化*/
    
    
    
    app.use(function(req,res,next){
        console.log('1、express这是第一个中间件');
        next();
        console.log('5、express匹配路由完成以后又会返回来执行中间件');
    })
    
    app.use(function(req,res,next){
        console.log('2、express这是第一个中间件');
        next();
        console.log('4、express匹配路由完成以后又会返回来执行中间件');
    })
    
    
    app.get('/',function(req,res){
        res.send('首页express');
    
    })
    
    
    app.get('/news',function(req,res){
        console.log('3、express匹配到了news这个路由');
        res.send('expres新闻');
    })
    /*匹配所有的路由  404*/
    app.use(function(req,res){
    
        console.log('6、express匹配到了news这个路由');
        res.status(404).send('express这是404 表示路由没有匹配到')
    
    })
    app.listen(3001,'127.0.0.1');
    
    /*
    *
    * 访问:127.0.0.1/3001
    * 1、express这是第一个中间件
    2、express这是第一个中间件
    4、express匹配路由完成以后又会返回来执行中间件
    5、express匹配路由完成以后又会返回来执行中间件
    * 访问:127.0.0.1/3001/xxx
    *1、express这是第一个中间件
    2、express这是第一个中间件
    6、express匹配到了news这个路由
    4、express匹配路由完成以后又会返回来执行中间件
    5、express匹配路由完成以后又会返回来执行中间件
    * 访问:127.0.0.1/3001/news
    1、express这是第一个中间件
    2、express这是第一个中间件
    3、express匹配到了news这个路由
    4、express匹配路由完成以后又会返回来执行中间件
    5、express匹配路由完成以后又会返回来执行中间件
    
    * */
  • 相关阅读:
    mybatis0206 延迟加载
    怎样关闭“粘滞键”?
    TNS-12557: TNS:protocol adapter not loadable TNS-12560: TNS:protocol adapter error
    HTTP协议头部与Keep-Alive模式详解
    oracle定时器执行一遍就不执行或本就不执行
    Inflation System Properties
    https://stackoverflow.com/questions/16130292/java-lang-outofmemoryerror-permgen-space-java-reflection
    java spring中对properties属性文件加密及其解密
    annotation配置springMVC的方法了事务不起作用
    SQLPlus在连接时通常有四种方式
  • 原文地址:https://www.cnblogs.com/loaderman/p/11511444.html
Copyright © 2011-2022 走看看