express 和 koa 的相同点
Express
和Koa
都是 TJ 写的一个,基于nodejs
的 web 框架- 两者都是使用了一些中间件来帮助完成一些功能
- 两者的相关 api 基本是大同小异的
express 和 koa 的区别
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
下去。
Koa
的中间件的函数都是async/await
函数,用同步的方式写异步。Koa
使用起来需要安装更多相关的中间件依赖,Express
则都已经提供好了。