美文网首页
koa的中间件

koa的中间件

作者: likely | 来源:发表于2018-09-17 10:29 被阅读35次

什么是koa?

由 Express 原班人马打造的 koa,致力于成为一个更小、更健壮、更富有表现力的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率。Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

什么是中间件?

中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。

如图

koa的中间件模型?

如图

koa的中间件采用的是洋葱模型,每一次对于程序的访问,都会从外向内依次经过每一个中间件,再依次由内向外。

如何手写一个中间件?

下面实现一个用户记录用户访问记录,服务返回时间的中间件为例。

const koa = require('koa')
const app = new koa()
const port = 3000

// middleware1 - logger
app.use(async (ctx, next) => {
    console.log(1)
  await next()
  console.log(2)
  const rt = ctx.response.get('X-Response-Time')
  logger.info(`${ctx.method} ${ctx.url} - ${rt}`)
})

// middleware2 - x-response-time
app.use(async (ctx, next) => {
    console.log(3)
  const start = Date.now()
  await next()
  console.log(4)
  const ms = Date.now() - start
  ctx.set('X-Response-Time', `${ms}ms`)
})

app.use(ctx => {
    console.log(5)
    ctx.body = 'hello world!'
})

app.listen(port, () => {
    console.log(`server start success at port ${port}`)
})

await next 意思就是跳过当前的程序执行下一个中间件, 所以当用户访问该程序时打出的日志就是1-3-5-4-2

相关文章

  • 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 中间件机制以及异常捕获

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

  • koa.js的使用(koa2)

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

  • koa 常用模块

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

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

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

  • koa洋葱模型

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

  • koa中间件原理

    之前有写过koa中间件的简单使用,简单回顾下: 运行: 以上就是koa中间件的使用,可以看出中间件的执行时通过us...

网友评论

      本文标题:koa的中间件

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