Есть ли практическая разница между использованием babel-runtime и babel-polyfill, когда * не * разрабатывается библиотека? (например, веб-приложение)

Это все в названии, правда.

В документации Babel на странице есть следующая строка, описывающая время выполнения babel

Другая цель этого преобразователя - создать изолированную среду для вашего кода. Встроенные модули, такие как Promise, Set и Map, имеют псевдоним для core-js, поэтому вы можете использовать их без проблем, не требуя глобально загрязняющего полизаполнения.

Polyfill - это всего лишь отдельный JavaScript-файл, который включает некоторые недостающие вещи.

Я протестировал polyfill и использование babel-runtime с моими инструментами сборки (webpack), и мои файлы немного меньше, когда я использую babel-runtime.

Я не занимаюсь разработкой библиотеки или плагина, а просто веб-приложением, а также не беспокоюсь о загрязнении глобальной области. Зная это, кроме немного меньшего конечного размера файла, есть ли какие-либо практические преимущества или преимущества в использовании среды выполнения над полифилом?

1 ответ

Решение

Если вы не заботитесь о загрязнении глобальной области видимости, лучшим вариантом будет использование polyfill: среда выполнения не работает с такими методами экземпляра, как [0, 1, 2].includes(1)пока полифилл будет.

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

Polyfill также не позволит вам включить две отдельные версии себя в ваш код. Это проблема только в том случае, если где-то в вашем коде требуются / импортируются два отдельных полизаполнения.

Другие вопросы по тегам