Вы можете прочитать из большинства комментариев, а другие ответы на вопрос, почему глобальная считается плохой практикой. Однако приложения node.js обычно запускаются из центральной точки, например «app.js», «server.js» или что-то подобное.
В этом случае вы можете сохранить какой-то «конфиг» (вы сказали, что вам нужны APP_NAME.users) в качестве опции конфигурации для этого файла. Таким образом, в «app.js» у вас есть:
var config = {
myVar: 100
}
Если вам необходимо получить доступ к этой переменной в некоторых из модулей, передать его в качестве параметра. Т.е. в глобальном файле называют его:
var module = require('./lib/myModule.js').init(config);
Теперь ваш модуль может иметь это функция инициализации на экспорт, так что она устанавливает свою собственную локальную копию конфигурации. Пример:
var localConfig = null;
exports.init = function(config) {
// merge the two config objects here
localConfig.myVar = config.myVar;
}
Наконец, вы можете связать локальный код с глобальным объектом с его личным значением. Что-то вроде этого в вашем модуле:
exports.modifyGlobalConfig = function() {
global.myVar = myLocalValue;
}
Ваш глобальный app.js затем использовал бы этот метод для изменения его глобального значения.
В общем, это плохая практика для перегрузки глобальной области. Одна переменная в порядке, но будет лучше, если у вас будут переменные в пространстве имен, например global.myProject = {...} –
Сохранение всех возможных локальных мест позволяет избежать коллизий, но также улучшает читаемость кода, так как вам не нужно постоянно покидать локальную область, пытаясь понять ее. –
Эта проблема не связана с каким-либо конкретным языком или платформой, это верно для всех языков. Не ограничивайте свое исследование просто node.js. Например, [этот вопрос] (http://codereview.stackexchange.com/questions/29130/global-variables-is-this-code-good-practice) задает почти то же самое для C++, и ответы все в основном так же важно для вашего дела. – Spudley