module.exports против экспорта в Node.js

Я обнаружил, что «SHGetFileInfo» (проверьте «www.pinvoke.net» для подписи) позволяет получить маленький или большой значок, точно так же, как если бы вы имели дело с файлом / папкой / элементом оболочки.

Jens;)

671
задан Yves M. 29 December 2014 в 10:34
поделиться

1 ответ

Для понимания различий необходимо сначала понять то, что Node.js делает к каждому модулю во время времени выполнения. Node.js создает функцию обертки для каждого модуля:

 (function(exports, require, module, __filename, __dirname) {

 })()

Уведомление первый параметрический усилитель exports является пустым объектом, и третий параметрический усилитель module является объектом со многими свойствами, и одно из свойств называют exports. Это - то, из чего exports прибывает и из чего module.exports прибывает. Первый каждый - переменный объект и последний, является свойством module объект.

В модуле, Node.js автоматически делает эту вещь вначале: module.exports = exports, и в конечном счете возвраты module.exports.

, Таким образом, Вы видите, что при переприсвоении некоторого значения [1 112] это не будет иметь никакого эффекта к [1 113]. (Просто, потому что exports точки к другому новому объекту, но module.exports все еще содержит старое exports)

let exports = {};
const module = {};
module.exports = exports;

exports = { a: 1 }
console.log(module.exports) // {}

, Но если Вы обновите свойства [1 117], то он будет, конечно, иметь эффект на [1 118]. Поскольку они оба точка к тому же объекту.

let exports = {};
const module = {};
module.exports = exports;

exports.a = 1;
module.exports.b = 2;
console.log(module.exports) // { a: 1, b: 2 }

Также уведомление, что при переприсвоении другого значения [1 119], затем это кажется бессмысленным для [1 120] обновления. Каждый обновления на [1 121] проигнорирован потому что module.exports точки к другому объекту.

let exports = {};
const module = {};
module.exports = exports;

exports.a = 1;
module.exports = {
  hello: () => console.log('hello')
}
console.log(module.exports) // { hello: () => console.log('hello')}
1
ответ дан 22 November 2019 в 21:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: