1. 中间件模型不同:
express 的中间件模型为线型,而 koa 的为U型(洋葱模型)。
2. 对异步的处理不同:
express 通过回调函数处理异步,而 koa 通过generator 和 async/await 使用同步的写法来处理异步,后者更易维护,但彼时 Node.js 对async 的兼容性和优化并不够好,所以没有流行起来。
3. 功能不同:
express 包含路由、渲染等特性,而 koa 只有 http 模块。
总的来说:
express 功能多一点,写法烂一点,兼容性好一点,所以当时更流行。虽然现在 Node.js 已经对 await 支持得很好了,但是 koa 已经错过了风口。
express 和 koa 的作者都是 TJ 。