今天在搞 express 的时候,用到了中间件函数。至于它的概念和使用技巧,我们就不提了。我只是对这个中间件函数内部的结构很感兴趣。所以今天就和大家一起聊聊这个中间件函数的原理。
使用技巧
在使用中间件函数的时候,有两个地方我们需要注意:一个是 app.use() 添加一个中间件函数,一个是回调函数中的 next() 这种特有的标志,它的意思很简单就是代表下一个中间件函数执行。
思路分析
通过使用之后,我们大致能明白,内部有个存放中间件函数的东西,并且这是个数组。所以我们就简单实现一下这个过程。
在 express 中都是通过 callback 回调函数去执行中间件函数,我们这里就简单模拟一个 compose 函数,实现所有中间件函数的调用。
fnmiddle() 执行就是调用 compose 的返回函数,它里面要对 middleware 数组中的所有函数处理,在这个返回函数内,我们使用递归的方式来实现一下这个流程。
这样一个中间件函数的大致原理就出来了,整体理解起来还是比较简单的,不过中间件思想在 web 的覆盖范围还是很广的,你能列举出来并写出大致的思路吗.