Есть ли практическая разница между использованием 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 также не позволит вам включить две отдельные версии себя в ваш код. Это проблема только в том случае, если где-то в вашем коде требуются / импортируются два отдельных полизаполнения.