在之前,使用css-loader来解析过css文件。那babel-loader则是用来解析js文件的。这是因为js的版本一直在更新,不断引入新的写法,但是浏览器的更新滞后,有些浏览器还不支持。所以就需要用babel-loader来进行转化成浏览器支持的写法。
一,不使用babel-loader的时候
我们在代码中写:
function getString(){
   return new Promise((resolve,reject)=>{
    setTimeout(()=>{
        resolve('hello world')
    },2000)
   })
}
async function helloworld(){
    let string=await getString()
    console.log(string)
}
export default helloworld
 
这种es6的语法的时候。当我们直接打包编译出来,在浏览器中运行的代码是这样的(这里实际上时mapsource映射的源文件。实际上打包出来的代码也是这样):
 
 可以看到,它并没有转化成es5,当浏览器不支持es5时,就会发生报错。所以,我们需要一个loader,来把es6的语法转化为es5这种浏览器通用的语法。
二,使用babel-loader
第一步:安装相关依赖
npm install -D babel-loader @babel/core @babel/preset-env
 
还需要安装处理async和await的包:
npm install -D @babel/runtime @babel/plugin-transform-runtime
 
第二步,配置webpack
{
  test: /\.js$/,
     use: {
       loader: 'babel-loader',
       options: {
         presets: ["@babel/preset-env"],
         plugins: [["@babel/plugin-transform-runtime"]],
         //开启缓存
         cacheDirectory:true
       },
     },
     exclude: /node_modules/
   }
 
这样之后,就能够把es6的代码转化为es5的代码了。









