Как работает область в Webpack с CommonJS - PullRequest
0 голосов
/ 11 мая 2018

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

CommonnJS: foo.js

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

module.exports = foo;

Основной JS

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

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

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

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

1 Ответ

0 голосов
/ 11 мая 2018

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

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

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

global.baz = baz;

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

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

Затем можете использовать его:

foo.bar(baz);
...