极客时间对于推广渠道会有返利优惠,比如山月在极客时间买了一门课,再把课程分享给好友购买,这时极客时间会向山月返利20元左右。
而我现在做了一个返利平台,你可以在上边通过山月的链接购买课程,此时极客时间会向我返利。为了共同学习,而你可以添加我的微信 (shanyue94),我将把极客时间给我的返利发一个红包全部返给你

# corejs

core-js (opens new window) 是关于 ES 标准最出名的 polyfill,polyfill 意指当浏览器不支持某一最新 API 时,它将帮你实现,中文叫做垫片。你也许每天都与它打交道,但你毫不知情。

有一段时间,当你执行 npm install 并且项目依赖 core-js 时,会发现 core-js 的作者正借助于 npm postinstall 在找工作。

由于垫片的存在,打包后体积便会增加,所需支持的浏览器版本​越高,垫片越少,体积就会越小。

以下代码便是 Array.from(ES6) 的垫片代码,有了它的存在,在任意浏览器中都可以使用 Array.from 这个 API。

// Production steps of ECMA-262, Edition 6, 22.1.2.1
if (!Array.from) {
  Array.from = () => { // 省略若干代码 }
}

core-js 的伟大之处是它包含了所有 ES6+ 的 polyfill,并集成在 babel 等编译工具之中

试举一例:

你在开发环境使用了 Promise.any (opens new window),而它属于 ES2021 新出的 API,在部分浏览器里尚未实现,同时,你又使用了 ES2020 新出的操作符 ?.

为了使代码能够在大部分浏览器里能够实现,你将会使用 babel 或者 swc 将代码编译为 ES5。

但是此时你会发现问题,如果不做任何配置babel/swc 只能处理操作符,而无法处理新的 API。以下代码会报错

babel

好消息是,core-js 已集成到了 babel/swc 之中。在 babel 中你可以使用 @babel/preset-env 或者 @babel/runtime 进行配置,详见文档 core-js (opens new window)通过配置,babel 编译代码后将会自动包含所需的 polyfill,如下所示。

PS: @babel/polyfill 已在 babel@7.4.0 被废弃掉,可使用 @babel/plugin-transform-runtime 代替。

babel-preset-env

关于山月

我的项目:
我的微信:shanyue94,欢迎交流
Last Updated: 7/21/2019, 11:25:08 AM