Как работает область в Webpack с CommonJS

Возможно, это не относится к реализации CommonJS модулей JS, но мой вопрос о том, как работает область действия с импортом модуля.

CommonnJS: foo.js

var foo = {
  bar() {
      baz();
  }
}

module.exports = foo;

Main JS

const foo = require('./foo.js');

function baz() {
  console.log('this is baz');
}

foo.bar();
//-> ReferenceError: baz is not defined

Обычно я ожидаю, что база будет найдена, но кажется, что область видимости модуля полностью изолирована. Это верно? Есть ли способ или лучшая практика в том, что я пытаюсь сделать?

1 ответ

Решение

Ничего общего с веб-пакетом.

Модули JavaScript имеют только локальный контекст

Если вы хотите, чтобы что-то было частью глобального / оконного контекста, вы можете использовать global переменная

global.baz = baz;

Или лучше использовать инъекцию зависимостей для передачи ваших обратных вызовов:

var foo = {
  bar(baz) {
      baz();
  }
}

Тогда можете использовать это:

foo.bar(baz);
Другие вопросы по тегам