其他分享
首页 > 其他分享> > core-js@3带来的惊喜

core-js@3带来的惊喜

作者:互联网

core-js@3带来的惊喜(但是貌似cnpm i core-js会有问题)

 

core-js

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

起因

uRp8Og.png

在使用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导出到我们的代码去的

uR9QE9.png

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 特性概览

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转译,非常有潜力,但是其暂时会增加打包体积,这个还得看未来普及度上来之后的权衡

标签:惊喜,core,useBuiltIns,polyfill,特性,js,babel
来源: https://www.cnblogs.com/coderwhytop/p/14933254.html