Все ли файлы javascript type = "module" изолированы друг от друга? - PullRequest
1 голос
/ 20 сентября 2019

У меня есть два внешних скрипта, на которые есть ссылки в нижней части моего HTML-документа:

<script type="module" src="/scripts-1.js"></script>
<script type="module" src="/scripts-2.js"></script>

Я выполнил несколько тестов и вижу, что если добавлю:

const logHelloWorld = () => console.log('Hello World');

logHelloWorld();

в любой внешний файл, то функция будет выполнена.

Но если я добавлю объявление функции к /scripts-1.js и logHelloWorld(); к /scripts-2.js, то консоль выдаст ошибку:

ReferenceError: logHelloWorld не определено

Это потому, что все type="module" все сценарии изолированы друг от друга?

Ответы [ 2 ]

2 голосов
/ 20 сентября 2019

Модули фактически «изолированы» друг от друга.Вы можете export вещи из одного модуля и import вещи в другой.Вообще говоря, флаг type="module" считается футуристической особенностью, которая в настоящее время обычно не используется.Для объединения всех ваших файлов JS лучше использовать другой инструмент, например, веб-пакет.

2 голосов
/ 20 сентября 2019

Да.Ресурсы, которые будут использоваться другими модулями, должны быть явно export ed и import ed, где они необходимы.

Здесь является одним из многих руководств по модульной системе ES6.

...