Есть ли какая-либо практическая разница между использованием babel-runtime и babel- polyfill при * не * разработке библиотеки? (например, веб-приложение)
Все это в названии, действительно.
В документации Babel на странице описывающей время загрузки babel, есть следующая строка
Другая цель этого трансформатора - создать изолированную среду для вашего кода. Встроенные функции, такие как Promise, Set и Map, вытесняются с помощью core-js, поэтому вы можете использовать их без проблем, не требуя глобального загрязнения polyfill.
polyfill - это только отдельный файл JavaScript, который включает в себя некоторые пропущенные вещи.
Я тестировал polyfill по сравнению с использованием функции babel-runtime с моими инструментами построения (webpack), а мои файлы немного меньше, когда я использую runel-runtime.
Я не разрабатываю библиотеку или плагин, просто веб-приложение, а также не заботятся о загрязнении глобальной области. Зная это, кроме немного меньшего финального файла, есть ли другие практические преимущества или точки в использовании времени выполнения над polyfill?
Ответы
Ответ 1
Если вы не заботитесь о загрязнении глобальной области видимости, polyfill - лучший вариант: среда выполнения не работает с такими методами экземпляра, как [0, 1, 2].includes(1)
, а polyfill будет.
Основное различие между ними состоит в том, что polyfill загрязняет глобальную область видимости и работает с методами экземпляра, тогда как среда выполнения не загрязняет глобальную область и не работает с методами экземпляра.
polyfill также не позволит вам включить в свой код две отдельные версии. Это только проблема, если в вашем коде требуется/импортировано два отдельных полина.