Насколько я понимаю, использование Babel позволяет использовать ecma6 javascript в среде ecma5 путем транспиляции. Однако, когда я использую «импорт», «импорт» переводится в «require». «require» не является ecma5 и требует библиотеки «require.js». Поэтому вы не можете использовать «импорт/экспорт» без дополнительных зависимостей, правильно ли это?Babel transpiles 'import' to 'require', но 'require не используется в ecma5
ответ
Да, Babel предназначен только для перевода новых языковых функций, совместимых с современными javascript-двигателями. Babel не компилирует синтаксис import require.js. Скорее, он использует синтаксис модуля CommonJS, используемый Node.js. Таким образом, вы можете запускать код напрямую без дополнительных зависимостей сборки в Node.js.
Поскольку он работает с одиночными файлами одновременно и представляет собой прямой перевод, он не принимает никаких решений относительно того, как вы хотите включить исходный код этих других файлов в текущий.
Тем не менее, если вы собираетесь использовать его в браузере, то вам нужно построить систему или Bundler, которая поддерживает CommonJS модули отчетов:
- См https://babeljs.io/docs/setup/#installation для списка многих типичных конфигураций сборки
- Browserify и Webpack являются двумя из самых популярных в экосистеме Javacript.
- Эти системы «связывают» ваш код javascript, вставляя файлы везде, где требуется «требуется», и поэтому обычно производят один выходной файл js, который вы можете запускать в ecma5
Попробуйте заменить требуемый код в транслированном коде соответствующим методом. Пример: для меня замените require («отреагируйте») на window.react будет работать