赞
踩
为什么Core-js
过去我们使用 babel 对 js 代码进行了兼容性处理,其中使用@babel/preset-env 智能预设来处理兼容性问题。
它能将 ES6 的一些语法进行编译转换,比如箭头函数、点点点运算符等。但是如果是 async 函数、promise 对象、数组的一些方法(includes)等,它没办法处理。
所以此时我们 js 代码仍然存在兼容性问题,一旦遇到低版本浏览器会直接报错。所以我们想要将 js 兼容性问题彻底解决
是什么Core-js
core-js
是专门用来做 ES6 以及以上 API 的polyfill
。
polyfill
翻译过来叫做垫片/补丁。就是用社区上提供的一段代码,让我们在不兼容某些新特性的浏览器上,使用该新特性
main.js
- // 添加promise代码
- const promise = Promise.resolve();
- promise.then(() => {
- console.log("hello promise");
- });
此时 Eslint 会对 Promise 报错。
npm i @babel/eslint-parser -D
- module.exports = {
- // 继承 Eslint 规则
- extends: ["eslint:recommended"],
- parser: "@babel/eslint-parser", // 支持最新的最终 ECMAScript 标准
-
- }
此时观察打包输出的 js 文件,我们发现 Promise 语法并没有编译转换,所以我们需要使用
core-js
来进行polyfill
安装命令
npm i core-js
main.js
将所有兼容性代码全部引入
- import "core-js";
-
- // 添加promise代码
- const promise = Promise.resolve();
- promise.then(() => {
- console.log("hello promise");
- });
或按需引入
- import "core-js/es/promise";
-
- // 添加promise代码
- const promise = Promise.resolve();
- promise.then(() => {
- console.log("hello promise");
- });
或自动按需引入
main.js中的core-js注释
- module.exports = {
- // 智能预设:能够编译ES6语法
- presets: [
- [
- "@babel/preset-env",
- // 按需加载core-js的polyfill
- { useBuiltIns: "usage", corejs: { version: "3", proposals: true } },
- ],
- ],
- };
最后会生成一个单独的js文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。