nodejs系列:72.koa之koa-compose-下

47 阅读3分钟

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

系列介绍

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

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

环境安装

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

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

nodejs安装

前言

在上一篇文章里nodejs系列:71.koa之koa-compose-上,主要是介绍了没有使用koa-compose中间件时,怎么执行多个中间件。

接下来,我们要介绍一下使用koa-compose中间件后,执行多个中间件的效果。

koa-compose

koa-compose是koa常用的中间件,用于koa中间件合并执行。

compose是将多个函数合并成一个函数

eg: a() + b() + c() => a(b(c()))

主要是使用promise/async、递归实现

示例

我们演示一下,使用koa-compose中间件的效果

创建文件

创建一个index.js文件,我们的服务器端代码将在这个文件内完成

引入koa
const koa = require("koa");
const app = new koa();

引入koa,创建koa实例对象

安装koa-compose
npm install koa-compose

要使用koa-compose中间件,需要先安装它

引入koa-compose
const compose = require("koa-compose");
定义中间件
let middle1 = (ctx, next) => {
  console.log("执行中间件1");
  next();
};
let middle2 = (ctx, next) => {
  console.log("执行中间件2");
  next();
};
let middle3 = (ctx, next) => {
  console.log("执行中间件3");
  next();
};

我们分别定义了三个中间件,三个中间件分别输出执行中间件1执行中间件2执行中间件3,中间件分别输出不同内容,方便我们辨识。

注意:中间件里,要执行next方法,才会执行下一个中间件。如果没有执行next方法,那么下一个中间件不会执行。

合并中间件
const all = compose([middle1, middle2, middle3]);
app.use(all);

调用koa-compose的compose方法,将多个中间件合并成一个中间件。然后注册这个合并后的中间件

监听端口
app.listen(3000, () => {
  console.log("服务器启动了");
});

运行

在cmd里,用node运行index.js文件

0001.png

服务器启动了,我们在浏览器里,访问我们的node服务器地址

0002.png

然后,到cmd里查看日志

0003.png

我们可以看到,我们定义的中间件都执行了,并且输出打印内容了

小结

本小结主要是演示了使用koa-compose中间件后的效果。使用koa-compose中间件,我们就可以把多个中间件都合并成一个中间件了。这对于一些逻辑复用是非常方便的,或者抽离一些公共的代码逻辑,把多个中间件抽取成一个公共的中间件。

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

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