express 和 koa 的区别

3,256 阅读1分钟

express 和 koa 的相同点

  1. ExpressKoa 都是 TJ 写的一个,基于 nodejs 的 web 框架
  2. 两者都是使用了一些中间件来帮助完成一些功能
  3. 两者的相关 api 基本是大同小异的

express 和 koa 的区别

  1. Koa 的中间件执行顺序是 U 形的,而 Express 则是直线型的: Koa 示例:
const Koa = require('koa')
const app = new Koa()

app.use(async (ctx, next) => {
  ctx.body = 'hello'
  await next()
  ctx.body += '1'
})

app.use(async (ctx, next) => {
  ctx.body += ' world '
  await next()
  ctx.body += '2'
})

app.use(async (ctx, next) => {
  ctx.set('Content-Type', 'text/html; charset=utf-8')
  await next()
  ctx.body += '3'
})

app.listen(3000)

此时的执行结果为:hello world 321

也就是说,在每一次 next() 后,都会进入下一个中间件,等最后一个中间件执行完以后,再从最后一个中间件的 next() 之后的代码往回执行,这也就是所谓的 U 型

而对于 express 来说,就只是按照顺序,一个一个 next 下去。

  1. Koa 的中间件的函数都是 async/await 函数,用同步的方式写异步。
  2. Koa 使用起来需要安装更多相关的中间件依赖,Express 则都已经提供好了。