#javascript #babeljs #microsoft-edge #babel-polyfill
#javascript #babeljs #microsoft-edge #babel-полизаполнение
Вопрос:
Судя по документам Babel, я могу полизаполнять свой код, используя либо @babel/preset-env
, либо @babel/transform-runtime
в моем конфигурационном файле babel.
@babel/preset-env
с помощью useBuiltIns: usage
добавим полизаполнение для string.replace
случаев, когда мой целевой список браузеров включает Edge 18.
Использование @babel/transform-runtime
вместо этого, string.replace
похоже, не заполняется по-разному.
Я бы хотел использовать оба, но документы рекомендуют не делать этого:
Должен ли я использовать @babel/preset-env
? Или является @babel/runtime
более современным и, следовательно, не вводит string.replace
polyfill?
Комментарии:
1. String.prototype.replace() существует уже целую вечность. Не могу представить, что для этого когда-либо понадобится полизаполнение
2. @charlietfl Вероятно, речь идет о новых функциях регулярных выражений, которые
replace
вызов должен был бы учитывать. Само по себе существование метода не помогает 🙂3. @Bergi ах, да, это может быть так. И поскольку
@babel/transform-runtime
это не приводит к такому полизаполнению, было бы ли сочтено лучшей практикой использовать@babel/preset-env
для полизаполнения методов экземпляра — а затем использовать@babel/transform-runtime
для его первоначальной цели внедрения вызовов во вспомогательную среду выполнения babel вместо того, чтобы babel записывал эти помощники непосредственно в передаваемые файлы?4. Как вы думаете, почему это должно быть заполнено полифоном
string.replace
? Возможно, вы путаете сreplaceAll
, который требует полизаполнения для Edge.