什么是koa中间件,他们的执行顺序是什么样的?
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中间件,他们的执行顺序是什么样的?相关推荐
- 初识洋葱模型,分析中间件执行过程,浅析koa中间件源码
前言 作为洋葱模型的第一篇文章,这里仅介绍了一些入门级知识,比如 了解洋葱模型执行顺序 分析部分 koa 中间件的源码来加深对中间件的认识 为第二篇文章:分析洋葱模型实现原理,在自己项目中接入洋葱模型 ...
- Koa 中间件的执行
Node.js 中请求的处理 讨论 Koa 中间件前,先看原生 Node.js 中是如何创建 server 和处理请求的. node_server.js const http = require(&q ...
- laravel构造函数和中间件执行顺序问题
今天想重构下代码结构: BaseController.php 放置公共的中间件 class BaseController { public function __construct(){ $this- ...
- egg koa 中间件执行原理,洋葱模型原理
1.官网例子 const Koa = require('koa'); const app = new Koa();// logger app.use(async (ctx, next) => { ...
- web前端技术分享:koa中间件是如何实现的?
在前端开发过程中我们可能会使用到koa中间件,但很多同学却不知道它是如何实现的,下面小千就来给大家介绍一下这个koa中间件(洋葱模型). 一.问题分析 async await是promise的语法糖, ...
- 深入理解 Koa 中间件之 “ 洋葱模型 ”
欢迎关注我的公众号『 前端我废了 』,查看更多文章!!! 前言 我们知道创建一个 Koa 应用主要分三步: const Koa = require('koa'); // 1. 创建一个 Koa 实例 ...
- 洋葱模型php,比较express与koa中间件模式的区别与联系
本篇文章主要介绍了详解express与koa中间件模式对比,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 起因 最近在学习koa的使用, 由于koa是相当基础的web框架 ...
- koa 接口返回数据_一文搞定 Koa 中间件实现原理
Koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小.更富有表现力.更健壮的基石. 通过利用 async 函数, Koa ...
- generator探幽(1)--koa中间件机制浅析
本系列旨在通过对co,koa等库源码的研究,进而理解generator在异步编程中的重大作用(ps:所有代码请在node --harmony或者iojs环境中运行) koa中间件的形式 相信用过koa ...
最新文章
- Windows XP源代码泄露,外媒从中发现隐藏Mac主题
- html5 strongeaseinout,Canvas開發庫封裝
- 自考之——我看《软件开发工具》
- AI:人工智能的多模态融合模型的简介、发展以及未来趋势
- VS Code 下载
- 企业数字化转型到底是什么?带你一图看懂答案
- HbuilderX + 配置Git 代码托管 - 教程篇
- 通过Ajax异步请求数据
- 《HFSS电磁仿真设计从入门到精通》一1.3 HFSS工程的通用设置
- zabbix2.4监控mysql_Zabbix 2.4.5自带MySQL监控的配置使用教程
- wms开发语言c 还是java,专业WMS和普通WMS之间差异有什么呢?
- ESP8266制作4G智能无人车按下前进松手即停和转弯调速的方案代码
- 为什么我们越娱乐反而会越无聊?
- windows下开启文件共享的访问日志
- 怎样查询今天是属于一年中的第几周?ww和iw 的周别问题。
- 知行合一(科学实践理论)
- 生物医药行业可以申报高新技术企业吗
- 微信小程序修改checkbox样式
- Spark GraphX 自带的图算法
- codevs 2830 蓬莱山辉夜