我正在尝试阅读Winston代码库,但在理解如何导出此主模块时遇到问题?我从未见过这种模式,有人可以向我解释它是如何工作的吗?是不是应该是const exports = winston
?不是相反吗?
这就是我在说的:
/**
* Setup to expose.
* @type {Object}
*/
const winston = exports;
答案 0 :(得分:1)
exports
只是一个对象。 winston
是对exports
对象的引用。
与编写exports.version = ...
等相同。
答案 1 :(得分:1)
在其余的代码中,您可以看到编写器正在向此Winston对象添加函数,例如:winston.Container = require('./winston/container'); winston.loggers = new winston.Container();
编写器实际上不是在使用module.exports
的常规语法导出模块,而是在处理导出对象本身。
因此,基本上'winston'只是对导出的引用,这是module.exports的简写。
因此,您可以将整个模块想像成这样:
module.exports.somePropertyName = 'someThing';