美文网首页
koa中间件

koa中间件

作者: 冷小谦 | 来源:发表于2018-10-15 15:29 被阅读54次

1.logger
koa一个重要设计就是中间件,首先先看logger打印日志的功能。

console.log(`${Date.now()} ${ctx.request.method} ${ctx.request.url}`)
也可以拆分独立函数
const logger=(ctx,next)=>{
  console.log(`${Date.now()} ${ctx.request.method} ${ctx.request.url}`);
  next();
}

中间件就是在request和response请求之间实现中间功能。
app.use来加载中间件,其中中间件默认接收两个参数,第一个是context对象,第二个是next函数,调用next函数,就可以把执行权转交给下一个中间件。
2.中间件栈
多个中间件形成栈结构,先进后出。

1.最外层的中间件首先执行。
2.调用next函数把执行权交给下一个中间件。
3.最内层的中间件最后执行
4.执行结束执行权交给上一层中间件
5.最外层中间件收回执行权后,执行next函数之后的代码。

const one = (ctx, next) => {
  console.log('>> one');
  next();
  console.log('<< one');
}

const two = (ctx, next) => {
  console.log('>> two');
  next(); 
  console.log('<< two');
}

const three = (ctx, next) => {
  console.log('>> three');
  next();
  console.log('<< three');
}

app.use(one);
app.use(two);
app.use(three);
输出:
>> one
>> two
>> three
<< three
<< two
<< one
即先执行最外层one,执行到最内层,再执行最能层代码,最后最外层one收回执行权。
如果把two的next注释:
>> one
>> two
<< two
<< one
执行到two没有next因此不再执行。

3.异步中间件
异步中间件必须携程async函数形式。

const fs = require('fs.promised');
const Koa = require('koa');
const app = new Koa();

const main = async function (ctx, next) {
  ctx.response.type = 'html';
  ctx.response.body = await fs.readFile('./demos/template.html', 'utf8');
};

app.use(main);
app.listen(3000);

中间件必须携程async函数,fs.readFile是异步操作必须携程await

相关文章

  • koa系列(三)

    文章内容:koa 中间件 以及 koa 中间件的执行流程。 一、什么是 Koa 的中间件 中间件就是匹配路由之前或...

  • 知识点总结

    Koa2中间件 koa(面向node.js的表达式HTTP中间件框架)、koa-router(路由中间件)、koa...

  • 8KOA 静态文件

    静态文件 使用 koa-static 中间件实现静态文件访问 安装中间件 使用中间件 使用 koa-mount 自...

  • koa

    koa 学习 中间件 koa-router koa-router 获取get/post请求参数 koa-bodyp...

  • koa.js的使用(koa2)

    koa与Express简单比较Express connect 中间件 封装了 路由、视图,koa co中间件 不包...

  • koa 常用模块

    koa-router koa路由中间件https://github.com/alexmingoia/koa-rou...

  • koa 中间件机制以及异常捕获

    koa 中间件机制以及异常捕获 koa 中间件机制解析 koa 的请求处理是典型的洋葱模型,下面是官方的配图,而这...

  • koa洋葱模型

    koa-compose:koa-compose则是将 koa/koa-router 各个中间件合并执行,结合 ne...

  • Koa项目总结四:Koa静态资源的配置

    使用koa-static中间件来处理Koa项目中的静态资源。 1.1 koa-static安装: 1.2 koa-...

  • 【koa2】koa-static-router 中间件搭建静态资

    koa中间件 koa-static-router中间件搭建静态资源服务器, 实现多个&&多层路由加载静态资源 源码...

网友评论

      本文标题:koa中间件

      本文链接:https://www.haomeiwen.com/subject/bgsfzftx.html