koa2中间件简易分析

安装koa脚手架 koa-generator

koa-generator支持koa1.x与koa2.x(node 7.6+,babel)。安装完成脚手架后,选择不同的命令koa/koa2。

全局安装

npm install -g koa-generator

快速建立项目结构,直接使用koa2命令即可,简单粗暴;各可选参数的含义在koa-generator上有

koa2 -e koa2-study

在这里插入图片描述

直接使用上面的命令安装依赖

cd koa2-study&&npm install

洋葱模型

在这里插入图片描述

洋葱图是官方解释中间件的标配菜。从接收request 到 response的返回,中间一圈一圈的代表中间件,如图右下的箭头等等。从request到response,每一个中间件都会经历两次。初始化Koa实例后使用use加载一个中间件,可以看出json(),logger()即是一个函数的执行。

const Koa = require('koa')
const app = new Koa()
....
app.use(json())
app.use(logger())

在koa-json中间件源码中可以看到导出的即是一个函数,在函数体中return 了另外一个函数,注意里面参数为ctx与next (具体见Koa 文档 https://koa.bootcss.com/#context)
在这里插入图片描述
由此我们定义一个中间件,next表示函数暂停将控制权交给下一个中间件,函数aw表示自己要处理的逻辑
在这里插入图片描述

执行顺序探究

koa执行顺序类似于栈的操作。在目录下建立middleware目录,在windows若使用命令行可以在git bash中使用

mkdir middleware
cd middleware
touch aw.js bw.js cw.js

对应的函数中aw 分别改成bw与cw,在app.js中引入对应的中间件
在这里插入图片描述

启动服务,我们可以看到" aw start "最先打印,但是在bw cw中间件执行end后才有“aw end“,同理bw 在cw end之后才 “bw end”。可以看出,中间件的引用有一定的顺序,在任何内层中间件中修改了数据,在外层中都可以修改回来
在这里插入图片描述

2018/12/13

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值