Как сохранить модуль ES6 в нескольких файлах? - PullRequest
0 голосов
/ 29 мая 2019

Это объявляет модуль ES6:

<script type="module" src="animals.js"></script>

Моя проблема заключается в том, что между модулем и исходным файлом устанавливается соединение 1: 1.

Я бы хотел разделить "animals.js" на "dogs.js" и "cats.js". Возможно ли это с модулями ES6?

Я хотел бы определить модуль следующим образом:

<script type="module" name="animals" src="dogs.js" src="cat.js"></script>

1 Ответ

1 голос
/ 29 мая 2019

ES-модули ограничены одним контекстом экспорта, который соотносится с одним автоматически созданным контекстом экспорта для файла.Так что ты не можешь.Однако вы можете ввести новый модуль, и он будет представлять собой собственный блок файла / скрипта.

В качестве альтернативы вы можете использовать пакет, который будет принимать несколько входных файлов и создавать один выходной файл модуля ES.Webpack может быть отличным выбором.

В качестве альтернативы, вы можете представить модуль, который импортирует и экспортирует содержимое других модулей, выступая в качестве оболочки или фасада, если хотите.

Кроме того, имейте в виду, что соединение 1: 1 между файлом сценария и модулем ES присуще всей конструкции модулей ES, а также многим другим системам связывания и пространствам имен.Это законная функция, и необходимость иметь более одного исходного файла на модуль может указывать на ошибочную архитектуру вашего программного обеспечения.

Если вам нужно поведение Java-подобного модуля, вам обязательно следует проверить Пространства имен Typescript .Несмотря на то, что вы в конечном итоге поймете, сколько существует различных предупреждений о выводе типов и проблем видимости параллельных модулей, и, таким образом, вы перестанете использовать их в целом для модулей ES2015, они могут быть полезны только для привыкания к современной технологии.

...