2016-07-03 3 views
6

Насколько я понимаю, использование Babel позволяет использовать ecma6 javascript в среде ecma5 путем транспиляции. Однако, когда я использую «импорт», «импорт» переводится в «require». «require» не является ecma5 и требует библиотеки «require.js». Поэтому вы не можете использовать «импорт/экспорт» без дополнительных зависимостей, правильно ли это?Babel transpiles 'import' to 'require', но 'require не используется в ecma5

ответ

6

Да, 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
0

Попробуйте заменить требуемый код в транслированном коде соответствующим методом. Пример: для меня замените require («отреагируйте») на window.react будет работать

 Смежные вопросы

  • Нет связанных вопросов^_^