Как разделить область видимости и переменные в Node? - PullRequest
0 голосов
/ 06 мая 2020

Я пишу программу узла и хочу, чтобы несколько функций, содержащихся в отдельных файлах, имели доступ и изменяли одну и ту же область переменных, не определяя их в глобальной области. * 1001 поделиться своим объемом, но это кажется немного сложным.

Вот дерево файлов:

- index.js
- file-a.js
- file-b.js
- shared-scope.js

index.js:

require('./file-a')
require('./file-b')

file-a.js:

const sharedScope = require('./shared-scope');

sharedScope.foo = 'bar'

file-b.js:

const sharedScope = require('./shared-scope');

console.log(sharedScope) // Prints { foo: 'bar' }

shared-scope.js:

module.exports = {};

Что вы думаете об этом? Это хороший способ разделения области видимости между модулями?

1 Ответ

1 голос
/ 06 мая 2020

Конечно, это называется синглтон. Кто-то может сказать, что любое глобальное разделяемое состояние - это плохо, но если это то, что вы хотите, это прекрасный и простой способ сделать это.

Наиболее очевидная альтернатива - определить данные в одном месте и затем в других модулях определите функции, которые работают с данными.

file-b.js:

module.exports = function (data) {
    data.foo = "bar";
}

index.js:

const assignFoo = require('./file-b.js');
const data = {};
assignFoo(data);
...