Глобальные переменные — это переменные, доступные во всех модулях и областях видимости приложения без необходимости их явного импорта. В Node.js они существуют в глобальном объекте, но имеют важные отличия от браузерного JavaScript.
Node.js предоставляет несколько встроенных глобальных переменных:
console.log(__dirname); // Путь к текущей директории
console.log(__filename); // Полный путь к текущему файлу
console.log(process); // Информация о текущем процессе
console.log(module); // Текущий модуль
console.log(require); // Функция для импорта модулей
В отличие от браузера, где глобальный объект называется window
, в Node.js используется global
:
global.myVariable = 'Доступно везде';
console.log(myVariable); // 'Доступно везде'
Область видимости:
Модульная система:
var
, let
или const
, не становятся глобальнымиПример создания:
// Не становится глобальной (модульная система Node.js)
accidentalGlobal = 'Опасно!';
// Явное создание глобальной переменной
global.actualGlobal = 'Правильно';
Загрязнение пространства имен:
// module1.js
global.config = { env: 'dev' };
// module2.js
global.config = { env: 'prod' }; // Конфликт!
Сложность тестирования:
Неявные зависимости:
Использование модулей:
// config.js
module.exports = { env: process.env.NODE_ENV };
// app.js
const config = require('./config');
Переменные окружения:
// .env файл
DB_HOST=localhost
// Приложение
console.log(process.env.DB_HOST);
Система зависимостей:
global
, если необходимо
Глобальные переменные в Node.js, доступные через объект global
, представляют мощный, но потенциально опасный инструмент. В отличие от браузерного JavaScript, Node.js предлагает модульную систему как основную альтернативу глобальному состоянию. Грамотное использование глобальных переменных требует понимания их влияния на архитектуру приложения и тестируемость кода.