koa中间件

koa中,中间件分为应用级和路由级

//应用级
app.use(async (ctx, next) => { //应用级中间件 ,先执行中间件,再匹配路由console.log("进入应用级中间件2");next()console.log("出应用级中间件2");
})
// 路由级
router.get("/", async (ctx,next) => { // 路由级中间件console.log('进入路游级');next()console.log('出路游级');})

它们的执行顺序是怎样的?

const Koa = require("koa")
// const Router = require("koa-router") // 引入并且实例化路由对象
// const router = new Router()
const router = require("koa-router")()// 引入并且实例化路由对象
let app = new Koa()
// 中间件执行顺序:先应用级再路由级,同级代码顺序会影响,不同级先执行应用级
app.use(async (ctx,next)=>{ //应用级中间件 ,先执行中间件,再匹配路由console.log("进入应用级中间件1");next()if(ctx.status === 404){ctx.body = "这是404页面"}else{console.log('没出错最后打印的');}console.log("出应用级中间件1");
})
router.get("/", async (ctx,next) => { // 路由级中间件console.log('进入路游级');next()console.log('出路游级');
})app.use(async (ctx, next) => { //应用级中间件 ,先执行中间件,再匹配路由console.log("进入应用级中间件2");next()console.log("出应用级中间件2");})router.get("/",async (ctx)=>{ctx.body = "首页"console.log('进入首页页面');})router.get("/news", async (ctx) => {ctx.body = "新闻列表"console.log('进入news');
})// router.get("/newsDetail/:id", async (ctx) => { // 动态路由
router.get("/newsDetail", async (ctx) => {//获取get传值const dataObj = ctx.query const urlStr = ctx.urlctx.body = "新闻详情"console.log('进入newsDetail');
})
app.use(router.routes())app.listen(3000)

以上代码执行后控制台输出

可以得出结论
koa中间件执行顺序为:
1.先应用级再路由级。
2.同级别的中间件,代码顺序会影响执行顺序。
3.不同级别代码顺序无影响,都是先执行应用级再路由级

什么是koa中间件,他们的执行顺序是什么样的?相关推荐

  1. 初识洋葱模型,分析中间件执行过程,浅析koa中间件源码

    前言 作为洋葱模型的第一篇文章,这里仅介绍了一些入门级知识,比如 了解洋葱模型执行顺序 分析部分 koa 中间件的源码来加深对中间件的认识 为第二篇文章:分析洋葱模型实现原理,在自己项目中接入洋葱模型 ...

  2. Koa 中间件的执行

    Node.js 中请求的处理 讨论 Koa 中间件前,先看原生 Node.js 中是如何创建 server 和处理请求的. node_server.js const http = require(&q ...

  3. laravel构造函数和中间件执行顺序问题

    今天想重构下代码结构: BaseController.php 放置公共的中间件 class BaseController { public function __construct(){ $this- ...

  4. egg koa 中间件执行原理,洋葱模型原理

    1.官网例子 const Koa = require('koa'); const app = new Koa();// logger app.use(async (ctx, next) => { ...

  5. web前端技术分享:koa中间件是如何实现的?

    在前端开发过程中我们可能会使用到koa中间件,但很多同学却不知道它是如何实现的,下面小千就来给大家介绍一下这个koa中间件(洋葱模型). 一.问题分析 async await是promise的语法糖, ...

  6. 深入理解 Koa 中间件之 “ 洋葱模型 ”

    欢迎关注我的公众号『 前端我废了 』,查看更多文章!!! 前言 我们知道创建一个 Koa 应用主要分三步: const Koa = require('koa'); // 1. 创建一个 Koa 实例 ...

  7. 洋葱模型php,比较express与koa中间件模式的区别与联系

    本篇文章主要介绍了详解express与koa中间件模式对比,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 起因 最近在学习koa的使用, 由于koa是相当基础的web框架 ...

  8. koa 接口返回数据_一文搞定 Koa 中间件实现原理

    Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 async 函数, Koa ...

  9. generator探幽(1)--koa中间件机制浅析

    本系列旨在通过对co,koa等库源码的研究,进而理解generator在异步编程中的重大作用(ps:所有代码请在node --harmony或者iojs环境中运行) koa中间件的形式 相信用过koa ...

最新文章

  1. Windows XP源代码泄露,外媒从中发现隐藏Mac主题
  2. html5 strongeaseinout,Canvas開發庫封裝
  3. 自考之——我看《软件开发工具》
  4. AI:人工智能的多模态融合模型的简介、发展以及未来趋势
  5. VS Code 下载
  6. 企业数字化转型到底是什么?带你一图看懂答案
  7. HbuilderX + 配置Git 代码托管 - 教程篇
  8. 通过Ajax异步请求数据
  9. 《HFSS电磁仿真设计从入门到精通》一1.3 HFSS工程的通用设置
  10. zabbix2.4监控mysql_Zabbix 2.4.5自带MySQL监控的配置使用教程
  11. wms开发语言c 还是java,专业WMS和普通WMS之间差异有什么呢?
  12. ESP8266制作4G智能无人车按下前进松手即停和转弯调速的方案代码
  13. 为什么我们越娱乐反而会越无聊?
  14. windows下开启文件共享的访问日志
  15. 怎样查询今天是属于一年中的第几周?ww和iw 的周别问题。
  16. 知行合一(科学实践理论)
  17. 生物医药行业可以申报高新技术企业吗
  18. 微信小程序修改checkbox样式
  19. Spark GraphX 自带的图算法
  20. codevs 2830 蓬莱山辉夜

热门文章

  1. (一)Redis初学教程之安装篇
  2. UVA10162 Last Digit【数学规律】
  3. 字节跳动杯2018中国大学生程序设计竞赛-女生专场题解
  4. 计算学习理论、统计学习基础理论
  5. 谷歌浏览器(chrome) —— 扩展应用程序
  6. 从 Beta-Binomial 共轭到 Dirichlet-Multinomial 共轭
  7. 创建对称矩阵(numpy)
  8. 在现有集群环境下动态增加(下架)新的节点
  9. pythonpath怎么设置_Python编程该怎么入门 模块引用的方法有哪些
  10. python菜鸟教程100例-对菜鸟教程的Python一百例的个别改进