如何判断JavaScript特性所属ES规范版本以清理冗余core-js polyfill?
ES版本特性区分及冗余polyfill清理方法
- 查特性文档的版本标注:每个JavaScript内置API的官方技术文档都会在版本说明区块,明确标注该特性首次纳入正式ECMAScript标准的年份版本,比如你提到的
Array.prototype.includes,对应的版本标注就是ES2016,不属于ES2015的原生支持范围。 - 参考core-js的元数据:core-js本身维护了所有polyfill对应的ECMAScript版本信息,你可以直接查看其模块源码的注释或者配套的元数据文件,每个polyfill都会标注对应的标准版本,筛选出版本大于2015的项就是可以移除的冗余内容。
- 对照各ES版本固定的新增特性清单:各年份的ES正式版新增内容是固定的,你可以直接对照清单快速筛选:
- ES2015核心新增特性:let/const声明、箭头函数、class语法、Promise、解构赋值、扩展运算符、Set/Map数据结构、
Array.prototype.find/findIndex、Object.assign、模板字符串、ESModule模块化语法等 - ES2016仅新增2项特性:
Array.prototype.includes、指数运算符** - ES2017及更高版本的特性均不属于ES2015原生支持范围,对应polyfill可根据你的实际需求判断是否保留
- ES2015核心新增特性:let/const声明、箭头函数、class语法、Promise、解构赋值、扩展运算符、Set/Map数据结构、
- 工具自动清理:你可以直接通过Babel的配置实现自动剔除冗余polyfill,只需在Babel配置中将
targets设置为支持ES2015的环境,示例配置为"targets": { "esmodules": true },配合core-js@3和useBuiltIns: 'usage'参数,打包时会自动排除所有ES2015已原生支持特性的polyfill,无需手动逐个排查。
内容的提问来源于stack exchange,提问作者user1059939
相关产品推荐
相关产品推荐

