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