Node.js предоставляет специальный объект global, который предоставляет доступ к глобальным, то есть доступным из каждого модуля приложения, переменным и функциям. Примерным аналогом данного объекта
в javascript для браузера является объект window
. Все доступные глобальные объекты можно посмотреть в документации.
Для примера создадим следующий модуль greeting.js:
const currentDate = new Date(); global.date = currentDate; module.exports.printMessage = function(){ const hour = currentDate.getHours(); if(hour > 16) console.log("Добрый вечер,", global.username); else if(hour > 10) console.log("Добрый день,", username); else console.log("Доброе утро,", username); }
Здесь, во-первых, происходит установка глобальной переменной date
: global.date = currentDate;
Во-вторых, в модуле получаем глобальную переменную username, которая будет установлена из вне. При этом обратиться к глобальной переменной username мы можем
через объект global: global.username
, либо просто через имя username
, так как переменная глобальная.
Определим следующий файл приложения app.js:
const greeting = require("./greeting"); global.username = "Eugene"; global.console.log(date); greeting.printMessage();
Здесь устанавливаем глобальную переменную username, которую мы получаем в модуле "greeting.js". И также выводим на консоль глобальную переменную date.
Причем все глобальные функции и объекты, например, console
, также доступны внутри global, поэтому мы можем написать и
global.console.log()
, и просто console.log()
.
Запустим файл app.js:
c:\app> node app.js 2023-11-21T17:32:19.063Z Добрый вечер, Eugene c:\app>
Однако по возможности все таки рекомендуется избегать определения и использования глобальных переменных, и преимущественно ориентироваться на создание переменных, инкапсулированных в рамках отдельных модулей.