core-js — наиболее известный стандарт ES polyfill. Polyfill означает, что если браузер не поддерживает определенный последний API, он поможет вам его реализовать. По-китайски это называется шим. Возможно, вы сталкиваетесь с этим каждый день, даже не подозревая об этом.

На какое-то время, когда вы выполните npm install и проект зависит от core-js, вы обнаружите core-js, что автор npm postinstall ищет работу с помощью .

За счет наличия прокладок объем после упаковки увеличится. Чем выше версия браузера, которую необходимо поддерживать, тем меньше будет прокладок и тем меньше будет размер.

Следующий код представляет собой код прокладки (ES6). Благодаря своему существованию этот API Array.from можно использовать в любом браузере .Array.from

// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) {
  Array.from = () => { // ... }
}

core-js Самое замечательное в том, что он содержит все ES6+ полифилы и интегрирован в babel других инструментов компиляции.'

Приведем пример:

В среде разработки вы использовали Promise.any, который представляет собой ES2021 новый API и еще не реализован в некоторых браузерах. В то же время вы также использовали ES2020 новый оператор ?..

Чтобы код работал в большинстве браузеров, вы будете использовать babel или swc для компиляции кода в ES5.

«Но сейчас у вас возникнет проблема. Если вы не выполняете никаких настроек, babel/swc может обрабатывать только операторов, но не может обрабатывать новые API. Следующий код сообщит об ошибке.'

Хорошей новостью является то, что core-js интегрирован в babel/swc, вы можете использовать @babel/preset-env или @babel/polyfill для настройки, подробности см. в документации core-js. 'Благодаря настройке babelнужный полифил будет автоматически включен после компиляции кода' , как показано ниже.

  • Нажмите, чтобы просмотреть следующую онлайн-демонстрацию кода