# 1.对比区别

# 架构层面:

  • express是完整的,强大的,内部实现了非常多好用的功能
  • koa是简洁的,轻便的,只包含最核心的功能
    • 像get,post方法都没有提供
    • 需要通过自己活着路由才能判断请求路径活着其他功能
  • 因为这两个框架最核心的东西就是中间件:
    • 但他们的中间件执行机制是不同的,特别是针对某个中间件包含的异步操作时

# 对比koa和express执行中间件:

**案例一:**加入三个中间件在一次请求中匹配到,并按照顺序执行

最终的方案是:

在middleware1中,在req.message中添加一个字符串aaa;

在middleware2中,在req.message中添加一个字符串bbb;

在middleware3中,在req.message中添加一个字符串ccc;

当所有内容添加结束后,在middleware1中,通过res返回最终的结果

express实现

  • 返回时在middleware1next后面返回
  • 为什么放在next()后面就可以呢?这个它的执行执行,调用栈有关
const express = require('express');

const app = express();

const middleware1 = (req,res, next) => {
  req.message = "aaa";
  next()
  // await middleware3() 异步的时候
  res.end(req.message)
}

const middleware2 = (req,res, next) => {
  req.message += "bbb";
  next()
}

const middleware3 = (req,res, next) => {
  req.message += "ccc";
}

app.use(middleware1, middleware2, middleware3);

app.listen(8000, ()=> {
  console.log('app启动在8000端口~')
})

上面是同步实现,但是异步的情况下就不会被拼接了,所以需要再第一个next后面调用,才会完全返回结果

# koa实现

  • 同步情况下,koa是和express一样的
  • 但异步情况下

# 其他:

koa一次性不能注册多个中间件,只能一个
express可以连续注册中间件
最后更新于: 2/9/2021, 4:24:52 PM