webpack学习笔记(九)—— webpack中babel的配置 处理es6

先看一个例子

//class 关键字,是es6中提供的新语法,是用来实现es6 中面向对象编程的方式
//Java C# 实现面向对象的方式完全一样了, class是从后端语言借鉴过来的, 来实现面向对象
//
class Person {
    //使用static关键字,可以定义静态属性
    //所谓的静态属性,就是可以通过类名直接访问的属性 如:Person.info
    //实例属性,只能通过类的实例,来访问的属性
   static info = {name:'hehe', age:20}
}

console.log(Person.info)
/*
//var p1 = new Person()
function Animal(name){
    this.name = name
}
Animal.info = 123

var a1 = new Animal('小花')

//这是静态属性
console.log(Animal.info)
//这是实例属性
console.log(a1.name)
*/

webpack运行上面的代码之后会报错 

原因如下:

在webpack中,默认只能处理一部分es6的新语法,一些更高级的es6语法或es7语法,webpack是处理不了的,这时候,就需要借助于第三方的loader,来帮助webpack处理这些高级的语法,当第三方loader把高级语法转为低级语法之后,会把结果交给webpack去打包到bundle.js中

解决如下:

通过babel,可以将高级语法转为低级语法

step1:在webpack中可以运行如下两套命令,安装两套包,去安装babel相关的loader功能

//第一套包 负责转换
cnpm i babel-core babel-loader babel-plugin-transform-runtime -D
//第二套包  语法插件  负责把es6转为对应的es3
cnpm i babel-preset-env babel-preset-stage-0 -D

 step2:打开webpack的配置文件,在module节点下的 rules数组中,添加一个新的匹配规则

//exclude排除node_modules
{test:'/\.js$/',use:'babel-loader',exclude:'/node_modules/'}

注意:如果不用exclude排除node_modules,则babel会把node_modules中所有的第三方js文件打包编译,这样非常消耗cpu,打包速度非常慢    哪怕babel把node_modules中所有的js都编译打包完毕,项目也不能运行

step3:在项目的根目录中,新建一个叫做 .babelrc 的babel配置文件,这个配置文件,属于JSON格式,所以,在写 .babelrc 配置的时候,必须符合JSON语法规范:不能写注释,字符串必须使用双引号

{
  "presets": ["env","stage-0"]
   
  "plugins": ["transform-runtime"],
  
}

preset是语法的意思,里面放语法

plugins是插件的意思,里面放插件

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": ["transform-vue-jsx", "transform-runtime"],
  "env": {
    "test": {
      "presets": ["env", "stage-2"],
      "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-    
                 import-node"]
    }
  }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值