Ответ 1
Вы всегда можете назначать переменные window.MyClass = whatever
(global.MyClass
для nodejs) независимо от того, где вы находитесь, и получать доступ к этим значениям из любого другого файла в вашем приложении. Это не всегда лучший способ совместного использования данных в глобальном масштабе в вашем приложении. Загрузчик модуля в nodejs (или AMD в ES6) берет все, что вы экспортируете и кэширует. Допустим, у вас есть файл вроде:
MyModule.js:
class MyClass {
constructor() {
this.someData = 55;
}
}
export default (new MyClass);
теперь, когда мы требуем этот файл из других источников, мы ВСЕГДА получаем ТОЧНЫЙ экземпляр MyClass
. Это означает:
file1.js:
import MyClass from './MyModule'
MyClass.someData = 100;
file2.js:
import MyClass from './MyModule'
console.log(MyClass.someData);
Это называется шаблоном singleton, где мы передаем один общий экземпляр вашего класса во всем приложении. Таким образом, мы можем получить доступ к тому же экземпляру MyClass
из разных файлов, без загрязнения глобальной области (мы избегаем назначений global.MyClass
, но выполняем те же функции).