polyfill 是什么
补丁,例如,Array.prototype.indexOf
在早期并不是所有浏览器都支持的。需要写补丁。
// 实现indexof的polyfill
if(!Array.prototype.indexOf) {
// 实现逻辑省略...
Array.prototype.indexOf = function(Object, max, min){ /* 具体逻辑省略 */ }
}
core-js和regenerator
core-js 是一个标准库,集成了ES6+ 新语法的polyfill。但是有一个语法不支持。
// ES6 generator函数(处理异步),但是大部分人都使用async/await
function* tell() {
console.log('执行a处理');
yield 'a';
console.log('执行b处理');
yield 'b';
console.log('执行c处理');
yield 'c';
}
let k = tell()
console.log(k.next());
console.log(k.next());
console.log(k.next());
console.log(k.next());
但是babel为了所有的都支持,于是还需要引入 regenerator。
babel-polyfill 即两者的集合
- Babel 7.4 之后弃用 babel-polyfill
- 推荐直接使用 core-js 和 rengenerator