Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Genzhen opened this issue Dec 31, 2020 · 1 comment
Labels
Node teach_tag 阿里 company

Comments

@Genzhen
Copy link
Collaborator

Genzhen commented Dec 31, 2020

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

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

@Genzhen Genzhen added Node teach_tag 阿里 company labels Dec 31, 2020
@zonglin823
Copy link

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 或者其他方式来维护用户的登录状态。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Node teach_tag 阿里 company
Projects
None yet
Development

No branches or pull requests

2 participants