在Node.js的Express框架中,中间件扮演什么角色?请解释其概念并说明在实际项目中如何定义和使用中间件。
考察说明
考查对Express中间件机制的理解及实际应用能力。
回答思路
- 【回答框架 1】中间件是Express中处理请求和响应对象的核心函数,按顺序执行。每个中间件可访问req和res,通过next()将控制权传递给下一个中间件,实现请求处理流水线。
- 【回答框架 2】使用方式包括应用级中间件(app.use挂载)、路由级中间件(router.use)和错误处理中间件(参数为err, req, res, next)。定义时传递函数,可指定路径前缀。
- 【回答框架 3】常见用途包括日志记录、身份验证、请求体解析(如express.json())、静态文件服务和错误处理。开发自定义中间件时,需在函数内调用next(),否则请求会被挂起。
- 【回答框架 4】中间件顺序至关重要,路由匹配后按注册顺序执行。错误处理中间件必须放在所有中间件之后,且有4个参数才能识别。
- 【回答框架 5】实际项目中常将中间件模块化,如创建logger.js导出函数,通过app.use(logger)引入,便于复用和测试。
- 【关键点 1】中间件本质是处理req/res的函数,通过next()衔接执行链。
- 【关键点 2】使用app.use或router.use挂载,错误处理中间件需4个参数且放置在最后。
- 【关键点 3】定义中间件时未调用next()会中断后续处理。
- 【关键点 4】中间件顺序影响功能,如请求体解析需在路由前调用。
- 【易错点 1】忘记调用next()导致请求无响应。
- 【易错点 2】错误处理中间件参数个数不足(少于4个)会被当作普通中间件。
- 【易错点 3】中间件挂载顺序不当导致某些功能失效,如日志未在路由前注册。