koa2-中间件

koa2-中间件

koa2官网

koa2介绍

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

应用程序

Koa 应用程序是一个包含一组中间件函数对象,它是按照类似堆栈的方式组织和执行的。 Koa 类似于你可能遇到过的许多其他中间件系统,例如 Ruby 的 Rack ,Connect 等,然而,一个关键的设计点是在其低级中间件层中提供高级“语法糖”。 这提高了互操作性,稳健性,并使书写中间件更加愉快。

这包括诸如内容协商,缓存清理,代理支持和重定向等常见任务的方法。 尽管提供了相当多的有用的方法 Koa 仍保持了一个很小的体积,因为没有捆绑中间件。

必修的 hello world 应用:

// app.js
const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
  ctx.body = 'Hello World';
});

app.listen(3000);

级联

Koa 中间件以更传统的方式级联,您可能习惯使用类似的工具 - 之前难以让用户友好地使用 node 的回调。然而,使用 async 功能,我们可以实现 “真实” 的中间件。对比 Connect 的实现,通过一系列功能直接传递控制,直到一个返回,Koa 调用“下游”,然后控制流回“上游”。

下面的图片,将中间件看成一个个圆形,比如从外往里,分别是
m1,m2,m3中间件,一个请求进来会先调用m1中间件,然后next到m2中间件,再next到m3中间件,m3下游没有更多中间件之后,可以理解到了中心点,然后依次出去,经过m3,再经过m2,最后是m1
在这里插入图片描述

// app.js
// require引入  app.use()调用
const Koa = require('koa')
const app = new Koa()

const m1 = require('./middleware/m1')
const m2 = require('./middleware/m2')
const m3 = require('./middleware/m3')



// middlewares
app.use(m1())
app.use(m2())
app.use(m3())

app.listen(3000);
// /middleware/m1.js
function m1 (ctx) {
  // ctx 全局对象
  global.console.log('m1')
}

module.exports = function() {
  return async function(ctx, next) {
    global.console.log('m1 start')
    m1(ctx)
    // 上面的中间件运行完毕 下面一行代码表示 下一个中间件运行
    await next()
    global.console.log('m1 end')
  }
}

// m2.js  m3.js同理 只是改变将m1替换为m2 m3

有请求进来时,看下面的日志顺序
在这里插入图片描述

ps

mkdir middleware 创建middleware文件夹
touch middleware/koa-pv.js   middleware文件夹下创建koa-pv.js文件

谢谢你阅读到了最后
期待你,点赞、评论、交流

发布了65 篇原创文章 · 获赞 76 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_42752574/article/details/104854668