1.koa 中间件的执行顺序

app.js

/**
* koa 中间件的执行顺序
*/
// 引入模块
const Koa = require('koa');
const router = require('koa-router')(); /*引入是实例化路由 推荐*/ // 实例化
let app = new Koa(); // Koa中间件
// 匹配任何路由,如果不写next,这个路由被匹配到了就不会继续向下匹配 // www.域名.com/news
app.use(async (ctx, next) => {
console.log('1、这是一个中间件01');
await next(); console.log('5、匹配路由完成以后又会返回来执行中间件');
}) app.use(async (ctx, next) => {
console.log('2、这是一个中间件02');
await next(); console.log('4、匹配路由完成以后又会返回来执行中间件');
}) router.get('/', async (ctx) => {
ctx.body = '首页';
}) router.get('/news', async (ctx) => {
console.log('3、匹配到了news这个路由');
ctx.body = '这是一个新闻页面';
}) router.get('/login', async (ctx) => {
ctx.body = '登录页面';
}) app.use(router.routes());
app.use(router.allowedMethods());
/**
* router.allowedMethods() 作用:这是官方文档的推荐用法,我们可以
* 看到 router.allowedMethods() 用在了路由匹配 router.routes()之后,
* 所以在当所有路由中间件最后调用,此时根据 ctx.status 设置 response 响应头
*/ app.listen(3000);

.

koa 基础(八)koa 中间件的执行顺序的更多相关文章

  1. Koa 中间件的执行顺序

    中间件工作原理 初始化koa实例后,我们会用use方法来加载中间件(middleware),会有一个数组来存储中间件,use调用顺序会决定中间件的执行顺序. 每个中间件都是一个函数(不是函数将报错), ...

  2. Django多个中间件的执行顺序

    Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出.中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健 ...

  3. JAVA基础2——类初始化相关执行顺序

    类初始化相关执行顺序 几个概念说明 代码块的含义与作用 static静态代码块: 一般用于初始化类中的静态变量.比如:给静态的数组或者list变量赋初值.使用static静态代码块进行初始化与直接在定 ...

  4. go语言基础之多个defer执行顺序

    1. 多个defer执行顺序 如果一个函数中有多个defer语句,它们会以LIFO(后进先出)的顺序执行.哪怕函数或某个延迟调用发生错误,这些调用依旧会被执.示例: package main //必须 ...

  5. testng基础知识:注解的执行顺序

    1. 单类,无继承父子关系 code: public class basicTest { @BeforeSuite(alwaysRun = true) public void beforeSuite_ ...

  6. - > 贪心基础入门讲解五——任务执行顺序

    分析: 本题可以抽象成,从一个整数开始,每次减去a,再加上b (a,b都是正数),要求每次操作都不产生负数. 针对本题a[i] = R[i], b[i] = R[i] – O[i],注意O[i] &l ...

  7. Java 基础:继承中的执行顺序

    1.单独的父类测试 Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分, 它们的执行顺序相对来说比较简单,用程序也很容易验证. 比如新建一个 ...

  8. WPF 基础 - 点击事件的执行顺序及 Button 点击事件的特殊性

    1. 点击事件的执行顺序 PreviewMouseLeftButtonDown PreviewMouseDown MouseLeftButtonDown MouseDown PreviewMouseL ...

  9. Java基础-继承-子类与父类执行顺序

    代码 public class Test { public static void main(String[] args) { new Circle(); } } class Draw { publi ...

随机推荐

  1. 微信小程序页面跳转传参方式

    //实现跳转的A页面 jump: function () { let a = 1; let b = 2; wx.navigateTo({ url: '/page/vipOrder/vipOrder?d ...

  2. 浅谈RPC框架

    RPC(Remote Promote Call) RPC(Remote Promote Call):一种进程间通信方式.允许像调用本地服务一样调用远程服务. RPC框架的主要目标就是让远程服务调用更简 ...

  3. python图像处理-生成随机验证码

    前面说了PIL库,还说了图片的缩放.旋转和翻转.现在说下网站上常用的随机验证码的生成.参考网站:https://www.liaoxuefeng.com/wiki/1016959663602400/10 ...

  4. & 位运算总结

    一.& 与  a & -a : 可以计算出 a 的二进制形式的第一个 1 出现的位置. eg: 6 & -6 = 0110 & 1010 = 0010

  5. 通过sql判断时间区间是否存在数据

    在做项目的时候遇到过一个问题,用户需要获取当前月或者几个月的数据,但是有一个要求,如果已经存在一张单已经包含了这几个月的数据,那么就不能再提取到重复的数据. 其实这个问题,我做完了我的方式之后才发现, ...

  6. Delphi 建立ODBC数据源

    樊伟胜

  7. [AWS - EC2] 如何向 Amazon Linux 2 实例传输文件,下载文件。How to send/ download files from Amazon Linux 2 Instance

    1. 需要: 安装 WinSCP 2. 需要: PuTTY 生成的ppk格式密钥, 没有的话请移步此文章,完成1, 2, 3步即可. 3. 打开 WinSCP , 如果提示已经有PuTTY配置是否导入 ...

  8. 【线段树哈希】「Balkan OI 2016」Haker

    1A海星 题目大意 给你一个长度为 $n$ ,由小写字母构成的字符串 $S$ 和 $Q$ 个操作,每个操作是以下 3 种之一: 1 x y k :询问当前字符串从位置 $x$ 到 $y$ 的子串与从位 ...

  9. css 命名规范 BEM

    在项目的开发过程当中, 我们往往因为日益复杂的css代码而感到力不从心. 如何合理的组织css代码成为了我们前端开发过程中必须考虑到的环节. 在读element源代码的时候, 了解到了BEM的命名风格 ...

  10. 搭建zookeeper集群_其中一个报Mode: standalone,另外两个分别是leader和follower

    用3个zookeeper搭建一个zookeeper集群,首先配置好一个zookeeper1,其余两个都是按照zookeeper1复制过来,然后稍微修改 运行集群成功,查看zookeeper状态 可以看 ...