Webpack系列——使用 Babel 处理 ES6 语法

有一些版本的浏览器对于JS新的语法(例如 ES6+)的支持不好,这时就需要将新的语法转换成 ES5 标准的语法,让浏览器正常识别它们,保证程序的稳定运行。

1.依赖安装

npm install -D babel-loader @babel/core @babel/preset-env

2.Loader设置

webpack.config.js

module: {
  rules: [
    {
      test: /\.m?js$/,
      exclude: /node_modules/,
      use: {
        loader: 'babel-loader'
      }
    }
  ]
}

对于 babel 的配置,我们一般放在 babel.config.json 中,在根目录中新建 babel.config.json

1.一般情况下的 babel 配置

babel.config.json

{
  "presets": [
    ["@babel/preset-env", {
      "useBuiltIns": "usage", // 按需引入模块
      "corejs": 3, // 核心 js 版本
      "targets": "> 0.25%, not dead" // 浏览器支持范围
    }]
  ]
}

注意: 必须要配置 useBuiltIns,如果不配置,babel 将不会处理 Promise、Map、Set、Symbol 等全局对象

在开发类库或第三方模块或者开发组件库时,上面这种import @babel/polyfill 的方案时就会产生问题,因为注入的时候会通过全局变量的形式注入,会污染到全局环境,需要换一种方式配置

2. 最佳的 babel 配置

如果在写一个库时,最好添加上插件 —— babel/plugin-transform-runtime,配置如下:

{
  "presets": [
    ["@babel/preset-env", {
      "targets": "> 0.25%, not dead"
    }]
  ],
  "plugins": [
    // 不污染全局,在运行时加载
    ["@babel/plugin-transform-runtime", {
      "corejs": 3
    }]
  ]
}

需要下载的依赖:

npm install --save-dev @babel/plugin-transform-runtime
npm install --save @babel/runtime
npm install --save @babel/runtime-corejs3

corejs 也要同时配置,2 的版本可以处理全局对象,但实例方法并不处理,所以这里用 3 的版本。


@babel/preset-env 只是用语法转换代码,如果我们不配置 useBuiltIns。

@babel/transform-runtime 可以提供重用助手,但默认情况下不要 polyfill。

大多数情况下最好的配置:使用@babel/preset-env 转换语法。使用@babel/transform-runtime 避免重复代码,并将 corejs: 3 配置为 polyfill。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值