本文你可以学到
1.理解koa2
洋葱模型核心源码 compose
函数实现
2.理解函数式编程衍生范式——面向切面编程
3.除了看源码,实战把洋葱模型思想应用到 SDK
项目中
Koa2 源码实现
通过它控制中间件内部内容的执行顺序。先来复习一下中间件结构。
function logger(ctx,next){}
类似这种的每个函数都是一个中间件。 然后这些中间件会被存放到一个 middlewares
中间件数组中。
然后依赖的核心库是 koa-compose
,去完成整个 middlewares
数组中函数的执行,他不是普通的遍历依次执行过程,里面有一些特殊实现,重点关注下 源码中 dispatch
函数实现。
源码如下,对核心代码部分进行了注释讲解
// compose 函数参数是前面提到的 middlewares 中间件数组
function compose(middleware) {// 参数校验:判断middleware是否为数组if (!Array.isArray(middleware))throw new TypeError("Middleware stack must be an array!