nodejs系列:23.koa 中间件

247 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情

系列介绍

该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。

这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。

环境安装

实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。

以下是nodejs的安装地址,如果你没有安装的话,可以先把它安装上。安装了可以忽略这一步,跳到下面一步。

nodejs安装

Koa中间件

在nodejs中,中间件主要是指封装http请求细节处理的方法。

而在koa框架里,中间件的本质是一个回调函数,参数包含请求对象、响应对象和执行下一个中间件的函数。

我们可以在这些中间件函数中,执行我们的业务逻辑代码。获取请求参数或者设置响应头、响应体、响应数据等操作。

可以采用两种不同的方法来实现中间件:

  • async function
  • common function

我们编写中间件常用写法是使用async function

koa中间件原理

koa中间件的内部处理过程,使用的是洋葱模型。

什么是洋葱模型?

从网上找了一张图,来介绍什么是洋葱模型

洋葱模型.webp

在洋葱模型中,每一层相当于一个中间件,用来处理特定的功能。比如:错误处理、session处理等等。

其处理顺序先是next()前请求(request,从外层到内层)然后执行next()函数,最后是next()后响应(response,从内层到外层),也就是说每一个中间件都有两次处理时机。

使用

下面通过一个简单示例,介绍一下怎么在koa里使用中间件

先创建一个index.js文件,引入koa
const koa = require("koa")
创建一个koa实例对象

let app = new koa()
使用中间件

app.use(async (ctx, next) => {
    console.log("中间件")
    await next()
})

参数介绍:

  • ctx:封装了request和response的变量
  • next:进入下一个要执行的中间件函数

注意:如果在中间件里,不使用next方法,执行流程是不会进入下一个中间件的。所以如果想要执行下一个中间件,要执行next方法。

启动服务器

app.listen(3000, () => {
    console.log("服务器启动")
})

小结

本篇文章,主要介绍了koa里的中间件:

在koa框架里,中间件的本质是一个回调函数,参数包含请求对象、响应对象和执行下一个中间件的函数

我们在koa里写中间件,比较常用的是使用async function的方式,来写koa中间件。

最后,放上自己比较喜欢的一句诗句:

千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》