Appearance
HTTP 请求日志 源代码导览
项目结构
morgan 的源代码结构:
morgan/
├── lib/
│ ├── index.js # 主入口
│ └── utils.js # 工具函数
└── index.js # 导出核心文件
1. index.js - 主入口
主入口文件导出中间件:
javascript
module.exports = morgan;2. lib/index.js - 中间件实现
中间件的核心逻辑:
javascript
function morgan(options) {
// 默认选项
const opts = options || {};
// 返回中间件
return function middleware(req, res, next) {
// 中间件逻辑
try {
// 处理请求
processRequest(req, res, opts);
// 调用下一个中间件
next();
} catch (err) {
// 错误处理
next(err);
}
};
}关键函数
1. processRequest() - 处理请求
处理请求的核心逻辑:
javascript
function processRequest(req, res, options) {
// 处理逻辑
}2. handleError() - 处理错误
处理错误的核心逻辑:
javascript
function handleError(err, req, res, next) {
// 错误处理逻辑
next(err);
}设计模式
1. 中间件模式
遵循 Express 中间件模式:
javascript
function middleware(req, res, next) {
// 中间件逻辑
next();
}2. 工厂模式
中间件函数是工厂函数:
javascript
function morgan(options) {
return function middleware(req, res, next) {
// 中间件逻辑
};
}总结
morgan 的源代码简洁而高效,通过模块化的设计和清晰的接口,实现了强大的功能。理解其源代码有助于我们更好地使用和定制 morgan。

扫描二维码关注"架构师AI杜"公众号,获取更多技术内容和最新动态
