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
нужный полифил будет автоматически включен после компиляции кода' , как показано ниже.
- Нажмите, чтобы просмотреть следующую онлайн-демонстрацию кода