2015-01-26 2 views
1

Я пытался модулизовать сервер и веб-приложения. Я читал об экспорте и module.exports в узле здесь и здесь.Что происходит с модулями, требуемыми в экспортируемых модулях Узел?

http://www.sitepoint.com/understanding-module-exports-exports-node-js/

http://liangzan.net/blog/blog/2012/06/04/how-to-use-exports-in-nodejs/

Я понимаю, как это делает функции, доступные для других файлов/скриптов, но то, что происходит с модулей, необходимых в экспортируемый файл? Если мне требуется websockets в каком-то файле, экспортировать его и потребовать его в другом файле, другой файл наследует веб-файлы из экспортируемого файла? Он похож на заголовочный файл на C и просто вставляет этот модуль в ваш файл?

ответ

2

Когда вы используете require() модуль в узле, он выполняется в закрытии, а значение, экспортируемое модулем, кэшируется. Таким образом, любые дополнительные require() s для того же модуля (расположенного по одному и тому же абсолютному пути) всегда будут получать один и тот же объект/значение/независимо.

Так, например, в вашем примере с веб-сайтами require('websockets'), который вы делаете в своем модуле, не может быть автоматически доступен всем, кому нужен ваш модуль. Все в модуле выполняется в отдельной локальной области (вы можете читать/записывать глобальную область, доступную для всех модулей, но вы действительно должны не это сделать). Вот почему вам нужно явно экспортировать значения для них, чтобы их видели сторонники.