2016-11-25 1 views
0

Я читал this article Аксель Rauschmayer, а именно интересно о следующих sentencs:Что означает «исходный объект экспорта» в commonjs?

Node.js стиле экспорт одной стоимости не работают. В Node.js вы можете экспортировать отдельные значения вместо объектов, например: module.exports = function() {...} Если вы сделали это в модуле A, вы не смогли бы использовать экспортированные функции в модуле B, так как переменная a a будет ссылаться на исходный объект экспорта A.

Что означает «исходный экспортный объект A»?

+0

В этом предложении используется система CommonJS, а не NodeJS, а исходный объект экспорта - это объект, который вы пытались переписать, когда вы выполняли 'module.exports = function {...}'. Другими словами, в 'B', импортирование' A' не будет импортировать эту функцию, если вы не присвоите ее * свойству 'module.exports' в' A'. Если в NodeJS вы получите любое значение, которое было бы присвоено непосредственно 'module.exports', если оно есть. –

+0

@squint благодарит за комментарии. Существуют ли какие-либо различия между Nodejs и CommonJS в отношении 'export'? но написано 'In Node.js, вы можете экспортировать одиночные значения вместо объектов, например: module.exports = function() {...} Если вы сделали это в модуле A, вы не сможете использовать экспортированная функция в модуле B' – Blake

+0

Извините, я думаю, что я немного в своем комментарии выше. Это касается циклических зависимостей, поэтому я думаю, что они говорят, что будет ограничение на то, что вы в конечном итоге импортируете в этой ситуации. Поэтому, если вы перезаписываете 'module.exports' со значением в A, который импортировал B, который импортирует A, в B, у вас не будет доступа к этому перезаписанному значению' export' из A, поскольку B был бы загружен * до * произошла перезапись, поэтому вместо перезаписанного значения оно получает исходное значение 'module.exports' (исходный объект). –

ответ

0

Каждый модуль в commonjs (node.js) экспортирует по умолчанию exports object, созданный модульной системой, которую вы можете рассматривать как пустой объект (хотя он не пуст).

Автор назвал этот объект экспорта по умолчанию original exports object.

+0

Почему этот способ 'module.exports = function() {...}' экспорта не работает? – Blake