过去我们使用
babel 对 js
代码进行了兼容性处理,其中使用
@babel/preset-env
智能预设来处理兼容性问题。
它能将
ES6
的一些语法进行编译转换,比如箭头函数、点点点运算符等。但是如果是
async
函数、
promise
对象、数组的一些方法
(includes)
等,它没办法处理。
所以此时我们
js
代码仍然存在兼容性问题,一旦遇到低版本浏览器会直接报错。所以我们想要将 js 兼容性问题彻底解决
一、什么是core-js
core-js
是一个
JavaScript
库,提供了许多
ES5、ES6
和其他新特性的
polyfills
,以确保这些新特性在旧浏览器上的兼容性。
polyfill
翻译过来叫做垫片/补丁。就是用社区上提供的一段代码,让我们在不兼容某些新特性的浏览器上,使用该新特性。
它的主要用途是为了确保
Web
应用程序在所有浏览器中都能运行,并提高代码的可移植性和可维护性。
举个例子,
ES6
引入了一个新的数据结构
Map
,但是在某些旧版本的浏览器中可能不支持
Map
。在这种情况下,使用
core-js
库的
Map polyfill
可以确保
Map
在旧浏览器上正常工作。同样,
core-js
还提供了
Promise、Set、Symbol
等其他转换和扩展功能
二、配置core-js
- 下载
npm i core-js
- 配置
bable.config.js
,实现自动按需加载
- babel.config.js
module.exports ={// 智能预设:能够编译ES6语法presets:[["@babel/preset-env",// 按需加载core-js的polyfill{useBuiltIns:"usage",corejs:{version:"3",proposals:true}},],],};
- 打包
npm run build
版权归原作者 jieyucx 所有, 如有侵权,请联系我们删除。