# 简介
Koa 体积小,可扩展性强。本身没有集成任何中间件,当需要用到某些功能的时候再去引入相关的中间件。
Koa1 使用 Generator 函数 (opens new window) 来处理异步回调函数,Koa2 使用 async await (opens new window) 来处理异步回调函数。
# 路由
koa-router (opens new window) 是 Koa 的路由器中间件。
koa-simple-router (opens new window) 是用于 koa 2.x 的简单快速路由器,比 koa-router 更轻量。
koa2-connect-history-api-fallback (opens new window) 是 koa2 的一个中间件,用于处理 vue-router 使用 history 模式返回 index.html,让 koa2 支持 SPA 应用程序。
connect-history-api-fallback (opens new window) 可以用来处理使用了 HTML5 history API 的应用程序路由返回到 index.html。
# 洋葱模型
通过 koa-compose (opens new window) 这个中间件来实现
上下文 ctx context
操作先进后出
有控制先进后出的机制 next()
有提前结束的机制
在 koa 中,中间件被 next() 方法分成了两部分。next() 方法上面的部分会先执行,下面的部分会在后续中间件执行全部结束之后再执行。
在洋葱模型中,每一层相当于一个中间件,用来处理特定的功能,比如错误处理、Session 处理等等。其处理顺序先是 next() 前请求(Request,从外层到内层)然后执行 next() 函数,最后是 next() 后响应(Response,从内层到外层),也就是说每一个中间件都有两次处理时机。
# 中间件
koa-mount (opens new window) 可用于挂载其他 Koa 应用程序作为中间件
应用级中间件,所有路由都会经过,并且是最先经过的
路由级中间件
错误处理中间件,这个是在应用级中间件中进行的,进行错误捕获
第三方中间件:koa-bodyparser(处理 post 请求)、koa-static(处理静态资源,启动了一个静态资源服务器)
# 模板渲染引擎
# Koa vs Express
Express 是基于 connect (opens new window) 实现的,自身封装了路由、视图等功能,一个大而全的框架,更适合开发大型应用。
Koa 是基于 co (opens new window) 实现的,但是本身不包含任何中间件,一个小而精的框架,更适合开发小型应用。