美文网首页
koa2洋葱模型

koa2洋葱模型

作者: 喜剧之王爱创作 | 来源:发表于2020-05-15 22:54 被阅读0次

写在前面

我们已经知道koa2中间件是基于async/await实现的,其执行过程是通过next来驱动的,于是,koa2就有了一个特殊的执行顺序,我们为这种执行顺序设定了一个模型叫--洋葱模型。

1.png 2.png

什么是洋葱模型

现在假想,你手里有一支牙签,横向穿过一个洋葱,是不是会层层穿透?从第一层进去、到第二层、第三次...然后到中间层后,再层层穿透的出,从第三层出、第二层、第一层...。其实我们的koa2中间件执行顺序也是这样的。抛开业务代码,用koa2官网的一个例子做实验

const Koa = require('koa');
const app = new Koa();

// logger
app.use(async (ctx, next) => {
  console.log('第一层洋葱 - 开始')
  await next();
  const rt = ctx.response.get('X-Response-Time');
  console.log(`${ctx.method} ${ctx.url} - ${rt}`);
  console.log('第一层洋葱 - 结束')
});

// x-response-time
app.use(async (ctx, next) => {
  console.log('第二层洋葱 - 开始')
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  ctx.set('X-Response-Time', `${ms}ms`);
  console.log('第二层洋葱 - 结束')
});

// response
app.use(async ctx => {
  console.log('第三层洋葱 - 开始')
  ctx.body = 'Hello World';
  console.log('第三层洋葱 - 结束')
});

app.listen(8000);

我们执行一下上面代码。会发现打印结果是

第一层洋葱 - 开始
第二层洋葱 - 开始
第三层洋葱 - 开始
第三层洋葱 - 结束
第二层洋葱 - 结束
第一层洋葱 - 结束

这就是洋葱模型,一个执行顺序。

这里只是我在学习过程中的一个总结,详细的洋葱模型这里推荐一片https://segmentfault.com/a/1190000013981513

写在最后

洋葱模型是koa2很重要的一个中间件执行顺序模型,理解他对理解koa2的中间件机制有很大帮助

相关文章

  • koa2洋葱模型

    写在前面 我们已经知道koa2中间件是基于async/await实现的,其执行过程是通过next来驱动的,于是,k...

  • koa 洋葱模型

    分析 1、首先这是koa2最简单的入门例子,我将通过这个入门例子来演示koa2的洋葱模型 在这里面,app首先是调...

  • koa2洋葱模型理解

    对于koa洋葱模式,只有实践了才能知道什么是洋葱模式 执行结果 从执行结果中可以看出,从第一个中间件开始,最后从第...

  • 读 koa2 源码后的一些思考与实践

    koa2的特点优势 什么是 koa2 Nodejs官方api支持的都是callback形式的异步编程模型。问题:c...

  • 【Node】深入浅出 Koa 的洋葱模型

    本文将讲解 koa 的洋葱模型,我们为什么要使用洋葱模型,以及它的原理实现。掌握洋葱模型对于理解 koa 至关重要...

  • koa2中间件原理

    koa2中间件的执行 koa2中间件的执行就像洋葱圈一样,从外面到最里面,再从最里面到最外面。 执行上述代码的结果...

  • HRBP如何做到懂业务——业务洋葱模型(IPO)

    一、什么是业务洋葱模型(IPO) 业务圆心像一个洋葱。“业务圆心”好比下图的业务洋葱模型(IPO)。 第一层:行业...

  • 洋葱模型

    1. app.use() 源码: 2. app.listen() 源码: 3. koa-compose 总结 整个...

  • 洋葱模型

    洋葱模型是一种中间件流程控制方式。 这是 koa.js 的示例代码: 任意一个请求到来将输出如下的执行结果: ko...

  • Koa2 中间件简易洋葱圈模型实现

    整个核心功能在于 compose,这个用于压缩所有被 use 调用过的中间件之上。每一次 use 一个新的中间件的...

网友评论

      本文标题:koa2洋葱模型

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