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匹配路由完成以后又会返回来执行中间件
    
    * */
  • 相关阅读:
    兜底方案只能用来兜底,而不能完全依靠它---记一次数据库唯一索引DuplicateKeyException异常的优化
    不注重开发细节,活该你忙!
    二叉树存储
    并查集模板
    684. 冗余连接
    820. 单词的压缩编码
    1102. 得分最高的路径
    滑动窗口模板
    古道西风“瘦马”
    西江月·凉凉
  • 原文地址:https://www.cnblogs.com/loaderman/p/11511444.html
Copyright © 2011-2022 走看看