Winston软件包中的模块如何导出?

时间:2018-12-11 16:01:43

标签: javascript node.js winston

我正在尝试阅读Winston代码库,但在理解如何导出此主模块时遇到问题?我从未见过这种模式,有人可以向我解释它是如何工作的吗?是不是应该是const exports = winston?不是相反吗?

这就是我在说的:

/**
* Setup to expose.
* @type {Object}
*/
const winston = exports;

2 个答案:

答案 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';