webpack打包转换es6_用babel-loader将ES6转换为ES5

项目在IE11上遇到ES6语法不支持的问题,通过安装babel-loader和@babel/core,配置webpack并引入@babel/preset-env插件,将ES6语法转换为ES5,确保在旧版浏览器中正常运行。可以创建.babelrc文件进行更灵活的配置。
摘要由CSDN通过智能技术生成

近日,在做网站开发的项目中遇到了头疼的事儿。项目使用js开发,用webpack打包编译,js使用了ES6的语法。其结果是网站在FireFox、Chrome这些浏览器上都没有问题,但是在IE11浏览器中,有的代码会报错。这就意味着,某些ES6的语法太新了,IE11不认啊(从另一方面说,IE11确实太落后了)。

解决的办法就是将ES6的语法转化为ES5的语法。

步骤如下:

安装babel-loader和@babel/core核心库:

yarn add babel-loader @babel/core -D

在webpack配置文件中配置babel:

module: {

rules: [

{

test: /\.js$/,

exclude: /node_modules/,

loader: "babel-loader"

}

]

}

这些代码是说:在编译js文件时,使用babel-loader加载器,但是编译的文件中不包含node_modules文件夹下的第三方库。

目前,我们只是将webpack与babel联系到一起了,但是应该怎样编译这些js文件,babel还不知道,因此就有了下面这步。

安装@babel/preset-env插件,用它来转ES6语法:

yarn add @babel/preset-env -D

修改之前第2步的配置,添加ES6语法转ES5语法的功能:

module: {

rules: [

{

test: /\.js$/,

exclude: /node_modules/,

loader: "babel-loader"

options:{

presets: ["@babel/preset-env"]

}

}

]

}

4.1 也可以更优雅一些,不把第4步的配置项写到第2步的配置项中。做法是在项目的根目录下新建一个.babelrc文件,内容如下:

{

"presets": ["@babel/preset-env"]

}

这样,配置项还是用第2步的,不用更改。项目在编译的时候,会自动找到这个.babelrc文件,并加载里边的配置项。这种方式更灵活,代码量少,阅读的时候清楚,只是要注意,要用json文件的那种双引号的写法。

至此,将ES6的语法转化为ES5的语法就配置完成了,比如它会将const,let转为var,将箭头函数转为function等等。项目在IE11中也不报错了。

但是我的项目中并没有使用到promise或weakmap等新的语法,按照开头参考文章中所介绍的,对于这些语法,还应该使用@babel/polyfill库,对此,我目前还没有验证过,如果在后续项目中用到了,再回到这里补充完整。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值