携手创作,共同成长!这是我参与「掘金日新计划 · 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设置响应,然后所有的中间件结束之后做了响应。