在 Express 框架中,请列举中间件的分类方式,并说明每种类型的基本功能和典型使用场景。
考察说明
考查对 Express 中间件体系结构的理解,包括分类、作用及典型用法。
回答思路
- 【回答框架 1】Express 中间件本质上是在请求和响应循环中执行的函数,可以访问请求对象、响应对象以及下一个中间件函数。它按功能可分为应用级中间件、路由级中间件、错误处理中间件、内置中间件和第三方中间件。
- 【回答框架 2】应用级中间件通过 app.use() 或 app.METHOD() 绑定到应用实例,所有请求或匹配特定路径的请求都会经过它,常用于日志记录、请求解析、身份验证等全局处理。
- 【回答框架 3】路由级中间件绑定在 Router 实例上,通过 router.use() 或 router.METHOD() 使用,它作用于特定路由模块,实现局部过滤。错误处理中间件有四个参数(err, req, res, next),必须放在所有中间件之后,用来捕获并处理同步或异步错误,避免应用崩溃。
- 【回答框架 4】内置中间件如 express.static、express.json、express.urlencoded 等,它们随 Express 附带,分别用于静态文件服务、解析 JSON 请求体和解析 URL 编码请求体;第三方中间件如 cors、morgan、body-parser 等通过 npm 安装,提供跨域、日志、请求体解析等扩展功能。
- 【回答框架 5】中间件按执行时机还可划分为预处理器和后置处理器,但核心分类仍以应用级、路由级、错误处理、内置和第三方为主,使用时需注意中间件的加载顺序与路径匹配规则,因为顺序影响执行链。
- 【关键点 1】应用级中间件绑定在 app 实例,路由级中间件绑定在 Router 实例。
- 【关键点 2】错误处理中间件必须有四个参数(err, req, res, next),且应置于末尾。
- 【关键点 3】内置中间件包括 express.static、express.json、express.urlencoded 等。
- 【关键点 4】中间件执行顺序与加载顺序一致,路径匹配影响是否执行。
- 【关键点 5】第三方中间件通过 npm 扩展功能,如 cors、morgan。
- 【易错点 1】错误处理中间件若缺少 next 参数,则不会被视为错误处理中间件。
- 【易错点 2】忘记调用 next() 会导致请求挂起,必须显式传递控制权。
- 【易错点 3】中间件顺序放错可能导致功能失效,如日志中间件在路由之后将无法记录该路由的请求。