Javascript - Где допустимы утверждения «импорт» и «экспорт»? - PullRequest
0 голосов
/ 22 декабря 2018

Я изучаю новую функцию import, export в Javascript, но мне было интересно, где в коде эти утверждения будут синтаксически допустимыми?

Я понимаю, что что-то вроде следующего не будет допустимым:

(function(){

    import thing from './thing.js';

})();

но означает ли это, что import допустимо только в верхней части скрипта модуля?Или в глобальном масштабе?Например, как насчет этого:

import a from './a.js';

(function(){

    // ... do something with a ...

})();

import b from './b.js';

// ...

Также относится ли это ограничение к export?Например, будет ли законным следующее?

(function(){

    function internalFunc() {
        // ...
    }

    export { internalFunc };

})();

Я не могу найти ничего об этом в текущих проектах спецификации.

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Мое чтение спецификации таково:

  • операторы экспорта модуля должны находиться на верхнем уровне модуля

  • операторы импорта модуля должнынаходиться на верхнем уровне модуля

  • выражения импорта в функциональном стиле (которые возвращают обещание для импортированных элементов) разрешены везде, где разрешено выражение

Как вы говорите, в настоящее время он поддерживается только в транспиляторах, поэтому я не уверен, насколько близко существующие транспортеры (Babel) следуют этим правилам.

0 голосов
/ 26 декабря 2018

1) Если вы хотите просто поиграть с операторами import, export, а затем использовать их без какой-либо транспиляции (с веб-пакетом) в Google Chrome;)

Я всегда использую модули ES6, пока я делаюнекоторые исследования и разработки.И тогда, только если моя временная работа того стоит, я начинаю думать о транспиляции.

Только не забудьте включить сценарии таким образом:

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

2) Если вам нужно написатьсценарий nodejs, затем включите экспериментальный флаг для использования модулей - https://nodejs.org/api/esm.html#esm_enabling

0 голосов
/ 22 декабря 2018

Нет такой реализации в javascript.Это запланировано.Но ни один браузер еще не реализовал это.Это реализовано в некоторых транспиляторах, таких как Webpack и Babel.Также есть необходимость в NodeJs.Но не изначально в JavaScript.Другой способ импортировать файлы - использовать библиотеку RequireJS.

Ссылка: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Statements/import

Редактировать

Отвечая на ваши вопросы в комментариях: AFAIU вуже доступны реализации импорта и экспорта, да, они доступны в глобальном пространстве, и да, импорт и экспорт подняты.Но то, что не очень ясно в вопросе вашего комментария, это то, что вы подразумеваете под «доступным только в глобальном пространстве».Не существует такого тесного пространства, которое не может проникнуть в глобальное пространство.Глобальное пространство доступно везде, как и импорт и экспорт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...