简介
bable 用于将 ES6 的语法编译为 ES5
搭建开发环境
npm i @babel/cli @babel/core @babel/preset-env
{
"presets": [
[
"@babel/preset-env"
]
],
"plugins": [
]
}
@bakel/preset-react
@babel/preset-typescript
执行编译
npx babel src/index.js
babel-polyfill
babel-polyfill 是 core-js 和 regenerator 的集合。
注意事项:
Babel 7.4之后弃用了 babel-polyfil,推荐直接使用 core-js和 regenerator,但面试中还是可能考察。
按需引入:只引入代码中使用的部分,其他部分不引入,可减少最终打包的体积。
.babelrc
"presets": [
[
"@babel/preset-env",
{
"useBuiltIns": "usage",
// corejs 的最新版本号
"corejs": 3
}
]
],
Babel 7.4之后弃用了 babel-polyfil,但也是按此方式配置,因为它直接用的 corejs ,没有用到 babel-polyfil
会污染全局环境,因为其实现方式是:
可能会覆盖用户的定义。
babel-runtime
用于解决 babel-polyfil 污染全局环境的问题。
仅自己开发的系统,可以不使用 babel-runtime ,但若是开发第三方库,则一定要用 babel-runtime
使用 _promise ,_includes 等自定义名称的方式,避免和用户的定义冲突。
"plugins": [
[
"@babel/plugin-transform-runtime",
{
"absoluteRuntime": false,
"corejs": 3,
"helpers": true,
"regenerator": true,
"useESModules": false
}
]
]
通常按此官方配置即可。