Сначала назовите целевую среду
Фраза работает в браузере слишком широка. Нужны конкретные поддерживаемые среды и версии либо явно заданная политика поддержки проекта. От этого зависит, какие конструкции требуется преобразовывать. Без такой цели можно получить лишнюю обработку или оставить несовместимую возможность незамеченной. Babel использует плагины и наборы настроек, включая средства выбора преобразований под целевые окружения. Настройки стоит читать вместе с версией установленного инструмента. Старое руководство может показывать имена пакетов и подходы, которые больше не являются подходящим вариантом для нового проекта.
Отделите запись программы от доступных объектов
Стрелочная функция относится к синтаксису языка. Например, выражение x => x * 2 задаёт преобразование входного значения в удвоенное. Для среды без поддержки такой записи компилятор может сформировать совместимую форму, сохраняя требуемое поведение. Наличие Promise относится к другой стороне совместимости: среда должна предоставлять соответствующую возможность выполнения. Одно преобразование стрелок не создаёт автоматически все отсутствующие встроенные объекты. Для таких случаев могут использоваться полифилы, подключение которых определяется отдельными настройками и потребностями проекта.
Проверяйте сохранение смысла
Современная конструкция не всегда является только короткой записью старой. У стрелочных функций нет собственного привязывания this, поэтому простая ручная замена каждой стрелки обычной функцией может изменить результат. Аналогично важно учитывать область видимости и другие свойства используемых конструкций. Задача компилятора состоит в соответствующем преобразовании, но настройка сборки и ограничения целевой среды всё равно требуют внимания. Не оценивайте корректность только по тому, что итоговый файл больше не содержит знакомого символа стрелки. Важно, что программа делает на проверяемых входных данных.
Проверьте именно итоговую сборку
Исходный файл, результат обработки и файл, который реально загружается на странице, могут различаться. Убедитесь, что тестируется нужная версия сборки и что подключены необходимые зависимости. Ошибка может быть связана с выбором файла или окружения, а не только с преобразованием синтаксиса. Для первой проверки возьмите небольшой самостоятельный пример без секретов и рабочих данных. Сравните ожидаемый результат в исходной и целевой средах. Если нужной среды нет, честно отметьте, какая часть совместимости остаётся непроверенной. Успешная компиляция не является доказательством успешного выполнения всех сценариев.
Попробуйте на практике
Составьте план проверки небольшого примера ES2015 без установки новых инструментов.
- Запишите целевую среду и отдельно отметьте, известны ли её версия и поддерживаемые возможности.
- Разделите используемые элементы на синтаксис и возможности выполнения, например стрелочную функцию и Promise.
- Для функции удвоения определите ожидаемые результаты на нескольких входных значениях и отметьте, используется ли контекст this.
- Опишите, какой итоговый файл и какие зависимости нужно проверить; если доступная сборка уже есть, сравните её фактический результат с ожиданиями.
Как проверить результат. Преобразование синтаксиса не смешано с добавлением отсутствующих возможностей. План проверяет поведение итогового кода и явно показывает непроверенные условия.
Частые вопросы
Babel автоматически делает любой код совместимым с любым браузером?
Нет. Результат зависит от целевых сред, конфигурации, используемых возможностей и ограничений платформы.
Если код успешно собрался, нужны ли проверки выполнения?
Да. Компиляция и выполнение являются разными этапами. Нужно убедиться, что загружается нужный результат и программа ведёт себя ожидаемо.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.