什么是koa洋葱模型?

什么是koa?

什么是koa洋葱模型?_第1张图片

Koa是一个精简的node框架,被认为是第二代Node框架,其最大的特点就是独特的中间件流程控制,是一个典型的洋葱模型,它的核心工作包括下面两个方面:

将node原生的req和res封装成为一个context对象。
基于async/await的中间件洋葱模型机制。

什么是洋葱模型。

何为“洋葱模型“?洋葱内的每一层表示一个独立的中间件,用于实现不同的功能,比如日志记录,异常处理等。每次请求都会从左侧最外层开始,一层层经过中间件,当执行到最里层的中间件之后,接着从最里层的中间件开始逐层返回。因此对于每层的中间件来说,在一个 请求和响应 周期中,都有两个时机点来添加不同的处理逻辑。是不是有点像 DOM 事件流的事件捕获阶段(从外到里)和事件冒泡阶段(从里到外)。
Koa的洋葱模型是以next()函数为分割点,先由外到内执行Request的逻辑,然后再由内到外执行Response的逻辑,这里的request的逻辑,我们可以理解为是next之前的内容,response的逻辑是next函数之后的内容,也可以说每一个中间件都有两次处理时机。洋葱模型的核心原理主要是借助compose方法

为什么需要洋葱模型?

因为很多时候,在一个app里面有很多中间件,有些中间件需要依赖其他中间件的结果,用葱模型可以保证执行顺序,如果没有洋葱模型,执行顺序可能出乎我们的预期

扩展Koa 与 Express 对比

1.express 拥有路由、模板等框架常见功能,Koa 不含任何中间件,Koa 可被视为 node.js 的 http 模块的抽象,
Express 则是 node.js 的应用程序框架。
2.中间件实现机制;express 基于 Callback,koa 基于 Promise
3.错误处理;express 对错捕获处理起来很不友好,每一个回调都拥有一个新的调用栈,因此你没法对一个 callback 
做 try catch 捕获,你需要在 Callback 里做错误捕获,然后一层一层向外传递。
4.响应机制;express在调用 res.send 方法后就立即响应了,而koa则是在所有中间件调用完成之后,在最外层中间件进行响应。

你可能感兴趣的:(前端)