简单科普一下中间件~

101 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8月更文挑战」的第4天,点击查看活动详情

前言

中间件是node.js最核心的地方,今天主要讨论一下中间件的基本概念,以及最常用的两个框架,express,koa的中间件。

中间件

中间件是指,具体的业务逻辑和底层逻辑解耦的组件,主要是封装http请求开始到响应结束过程中的处理逻辑。中间件就是一个函数,通过next()执行下一个中间件。
注册中间件的方式
app.use()就是依次把中间件函数push到数组里面
一个参数(函数)

app.use((req, res, next) => { 
  next() 
})

两个参数(路由 + 函数)
只要父级路由命中就可以

// 使用use,或者使用get,post
app.use('/api', (req, res, next) => {
  next() 
})
app.get('/api', (req, res, next) => { 
  next()
})

中间件函数的参数可以有4个,第一个是处理异常的,处理异常需要在请求之后
app.use(function (err, req, res, next) { })
中间件的执行流程:通过回调依次执行数组中的函数,通过Promise.then链式调用

express和koa中间件

它们是对原生Node.http模块的封装

express中间件机制:是线型模型。
koa中间件机制:洋葱型模型(先顺序执行next前面的逻辑,在逆序执行next后面的逻辑) 是一个async函数,返回一个promise。

express的响应机制:直接操作res对象,res.send() 之后就立即响应。不再继续执行next()
koa的响应机制:通过ctx.body设置响应,然后所有的中间件结束之后做了响应。