中间件分类

前言

市面上的大部分Web框架,都提供了很多Web相关的能力支持,例如。

  • HTTP服务
  • 路由管理
  • 模板渲染
  • 日志
  • 插件/中间件等AOP能力
  • 其他能力

Koa.js 作为一个web框架,总结出来只提供了两种能力

  • HTTP服务
  • 中间件机制(AOP切面)

综上所述,用Koa.js想实现大部分Web功能的话,就需要整合相关功能的中间件。换句话说,Koa.js 说就是中间件的大容器,任何Web所需的能力通过中间件来实现。

Koa.js 中间件的分类,在我的理解,可以分成以下两种类型。

  • 狭义中间件
  • 广义中间件

狭义中间件

狭义中间件特点:

  • 中间件内操作请求 request
  • 中间件内操作响应 response
  • 中间件内操作上下文 context
  • 大多数直接被 app.use() 加载

举个栗子 例如 中间件koa-static主要是靠拦截请求和响应,加载静态资源,中间件koa-bodyparser主要是拦截请求后解析出HTTP请求体重的POST数据,再挂载到ctx上。

广义中间件

广义中间件特点

  • 不直接提供中间件
  • 通过间接方式提供了中间件或者子中间件
  • 间接被 app.use() 加载
  • 其他方式接入Koa切面

举个例子 例如中间koa-router 是先注册路由后形成多个子中间件,后面再封装成一个父中间件提供给app.use()加载,让所有子中间件加载到Koa.js的请求洋葱模型中。