Когда я только-только начал играться с Node.js, для меня существовала лишь одна вещь, которая доставляла мне дискомфорт. Занятно, но я говорю сейчас о
module.exports
. Говоря
занятно, я намекаю на то, что это, всё-таки, одна из фундаментальных частей Node.js и она достаточно проста. Сейчас же, оглядываясь назад, я не могу объяснить почему меня это так стопорило… Просто помню, что этот момент был для меня не очевиден. Ну и, полагаю, что я один из тех многих, кто встретив его разок-другой, сначала только путался, прежде чем написал что-либо применив его.
В Node, все штуки видны друг другу только в рамках одного и того же файла. Под
штуками я подразумеваю переменные, функции, классы и их члены. Например у нас есть файл
misc.js
следующего содержания:
var x = 5;
var addX = function(value) {
return value + x;
};
Привычный доступ к переменной
x
и функции
addX
из другого файла невозможен. Это никак не связано с использованием
var
. Дело в том, что Node состоит из блоков называемых
модулями, и каждый отдельный файл по своей сути — отдельный блок, чья область видимости изолирована от других таких же блоков.