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匹配路由完成以后又会返回来执行中间件
    
    * */
  • 相关阅读:
    杭电OJ 输入输出练习汇总
    七月读书笔记
    情报分析报告阅读笔记
    情报研究与分析入门阅读笔记
    旁观者攻击
    域前置技术相关学习
    CC攻击和C2的区别
    DNS投毒学习分析总结
    数字证书2.0版本学习总结
    《在树洞里》-感悟
  • 原文地址:https://www.cnblogs.com/loaderman/p/11511444.html
Copyright © 2011-2022 走看看