中间件分类
前言
市面上的大部分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的请求洋葱模型中。