lgwebdream / FE-Interview

🔥🔥🔥 前端面试,独有前端面试题详解,前端面试刷题必备,1000+前端面试真题,Html、Css、JavaScript、Vue、React、Node、TypeScript、Webpack、算法、网络与安全、浏览器
https://lgwebdream.github.io/FE-Interview/
Other
6.81k stars 898 forks source link

Day211:有没有写过 Koa 中间件,说下中间件原理,介绍下自己写过的中间件 #1029

Open Genzhen opened 3 years ago

Genzhen commented 3 years ago

每日一题会在下午四点在交流群集中讨论,五点小程序中更新答案 欢迎大家在下方发表自己的优质见解 二维码加载失败可点击 小程序二维码

扫描下方二维码,收藏关注,及时获取答案以及详细解析,同时可解锁800+道前端面试题。

zonglin823 commented 1 year ago

Koa 中间件原理: Koa 中间件是一种函数,它接收两个参数:ctx 和 next。其中 ctx 是 Context 对象,它包含了当前请求的信息和响应的方法;next 是下一个中间件的引用,可以通过调用 next() 方法将控制权交给下一个中间件。

Koa 中间件可以执行以下操作:

修改请求和响应对象的属性,例如设置响应头、响应状态等。 添加、删除、修改请求和响应对象的字段和方法。 调用下一个中间件。 Koa 中间件的执行顺序是从上到下依次执行,遇到 await next() 时,控制权将传递给下一个中间件,如果遇到 return 或者中途出错,则不会向下执行。

以下是我介绍几个我听过的比较常见的中间件:

koa-static:这个中间件用于提供静态资源的服务。它会在指定的目录下查找匹配的文件,并返回给客户端。

koa-router:这个中间件用于处理路由。它可以根据请求的 URL 路径找到对应的中间件。

koa-bodyparser:这个中间件用于解析请求体中的 JSON、表单等数据,并将其保存到 ctx.request.body 中。

koa-logger:这个中间件用于记录请求和响应的日志信息。

koa-session:这个中间件用于保存用户会话信息。它将用户的信息保存在内存或者数据库中,并通过 cookie 或者其他方式来维护用户的登录状态。