core-js

这个名词肯定很多人没听过,今天也是在配置babelpolyfill方法发现的

起因

在使用useBuiltIns:usage按需加载polyfill时,npm run build,就出现上述的提示

{
"presets": [
["@babel/preset-env", {
"useBuiltIns": "usage",
"targets": {
"chrome": "58",
"ie": "11"
}
}]
]
}

大意是说我们使用了useBuiltIns选项但是没有指定core-js警告,但是告诉你默认是使用core-js@2,但是这个默认行为以后可能会发生改变,最好显示设置core.js,然后列出了@2和@3两个版本

core-js介绍

其实core-js是我们能够使用新的API的最重要的包,然而一般情况它隐藏在webpack编译后的代码中,我们一般不会去查看,所以容易被遗忘,我们在webpack生成环境下,查看编译后的代码,可以看到例如includes就是从core-js导出到我们的代码去的

core-js是什么

  • 它是JavaScript标准库的polyfill
  • 它尽可能的进行模块化,让你能选择你需要的功能
  • 它可以不污染全局空间
  • 它和babel高度集成,可以对core-js的引入进行最大程度的优化

升级core-js@3动机

目前我们使用的都默认是core-js@2,它在一年半之前就封锁了分支,至此之后的特性都只会添加到core-js@3,这里有一个生产例子,使用了core-js@2不支持的新特性,导致错误

core-js@2出现的问题

Vue-cli使用flat报错

vue-cli也会在V4升级core-js

Roadmap for Vue-cli4

core-js@3添加的特性

具体core-js@3才有的特性看这里

core-js@3 特性概览

  • 支持ECMAScript稳定功能,引入core-js@3冻结期间的新功能,比如flat

  • 加入到ES2016-ES2019中的提案,现在已经被标记为稳定功能

  • 更新了提案的实现,增加了proposals配置项,由于提案阶段不稳定,需要谨慎使用

  • 增加了对一些web标准的支持,比如URL 和 URLSearchParams

  • 现在支持原型方法,同时不污染原型

  • 删除了过时的特性

core-js@3与babel

以前我们实现API的时候,会引入整个polyfill,其实polyfill只是包括了以下两个包

core-js
regenerator-runtime

core-js@3升级之后弃用了@babel/polyfill,以下是等价实现

// babel.config.js
presets: [
["@babel/preset-env", {
useBuiltIns: "entry", // or "usage"
corejs: 3,
}]
] import "core-js/stable";
import "regenerator-runtime/runtime";

总结

core-js@3废弃了babel-polyfill,实现了完全无污染的API转译,非常有潜力,但是其暂时会增加打包体积,这个还得看未来普及度上来之后的权衡

最新文章

  1. javafx之HTTP协议交互
  2. oracle 学习笔记2
  3. Postgres SQL学习笔记
  4. 坑!坑!坑!防不胜防的unsigned int的运算
  5. Oracle 物化视图创建
  6. Handlebars模板引擎中的each嵌套及源码浅读
  7. Windows Server 2008 R2 域控制器部署指南
  8. PHP 计算页面执行时间
  9. POJ2553-The Bottom of a Graph
  10. 64位windows8的 IIS运行32位COM组件报错的解决
  11. 权威指南之脚本化http
  12. drupal 7 模块开发,hook_form
  13. JAVA命令参数详解
  14. 控制流之if
  15. 手机自动化测试:appium源码分析之bootstrap十一
  16. JS正则密码复杂度校验之:至少有多种字符中的其中几种
  17. jackjson和fastjson进行Bean与json互换
  18. Winform应用程序实现通用遮罩层二
  19. uva1354 枚举二叉树
  20. [Alpha阶段]第一次Scrum Meeting

热门文章

  1. Web 前端学习大纲
  2. harbor部署常见的错误
  3. 还不懂MySQL索引?这1次彻底搞懂B+树和B-树
  4. python基础入门 列表
  5. Python3之Django的Cookie与Session的使用
  6. poj 1077 Eight (八数码问题——A*+cantor展开+奇偶剪枝)
  7. 学习Python编程技术的流程与步骤,自学与参加培训学习都适用
  8. Python连载58-http协议简介
  9. Java 商户管理系统 客户管理 库存管理 销售报表 SSM项目源码
  10. Vue ES6箭头函数使用总结