前言

此内容是个人学习笔记,以便日后翻阅。非教程,如有错误还请指出

Webpack 将es6、es7语法降级为es5

需要通过 babel JavaScript编译器。

安装: npm i babel-loader、@babel/core、@babel/preset-env

plugins:
@babel/plugin-proposal-decorators --save-dev
@babel/plugin-proposal-class-properties --save-dev
@babel/plugin-transform-runtime: 它允许重新使用Babel注入的帮助程序代码来保存代码大小 --save-dev
@babel/runtime 这个要安装依赖到生产环境, 避免编译输出之间的重复 --save

如果你使用更高级的 ES6语法, 如 装饰器 @autobind、类的修饰,方法的修饰,使用新的写法定义类的属性
都配置在 loader: '@bable-loader'的options中

class N {
  name = qiqingfu;
  @autobind
  sayName() {
    console.log(this.name)
  }
}

const n = N()
n.name // qiqingfu
let { sayName } = n
sayName() // 1  修饰器@autobind  强制调用此函数以使其始终引用类实例

webpack配置:

module.exports = {
  ...
  module: {
    rules: [
      {
        test: /\.js$/,
        use: [
          {
            loader: 'babel-loader',
            // babel-loader的一些配置选项
            options: {
              presets: [
                '@babel/preset-env'   // 将es6转换为 es5
              ],
              plugins: [
                ["@babel/plugin-proposal-decorators", { "legacy": true }],
                ["@babel/plugin-proposal-class-properties", { "loose" : true }]
                ["@babel/transform-runtime"]
              ]
            }
          }
        ]
      },
      {
        // eslint
        test: /\.js$/,
      }
    ]
  }
}

可以配置多个loader,下面 /.js$/可以再配置 eslint, loader的执行顺序是自左向右,自下到上。所以需要先

ESLint

可组装的 JavaScript和JSX检查工具, 提供一个插件化的 JavaScript 代码检查工具。

Babel

Babel是一个工具链, 主要用于在旧的浏览器或环境中将 ECMAScript 2015+代码转换为向后兼容版本的。

  • Plugins
  • Presets

Plugins: 代码转换以插件的形式出现, 插件是小型的 JavaScript 程序, 它指示 Babel 如果对代码进行转换。

Presets: 如果想要转换代码中还有其它 ES2015+ 功能。可以使用 preset来代替预先设定的一组插件,
而不是逐一添加我们要想的插件。

笔记地址

Webpack4 学习笔记三 ES6+语法降级为ES5的更多相关文章

  1. VUE 学习笔记 三 模板语法

    1.插值 a.文本 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值 <span>Message: {{ msg }}</span> v-once ...

  2. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  3. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  4. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  5. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. 学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

    回到顶部 注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法 ...

  7. python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样

    python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...

  8. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  9. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

随机推荐

  1. UGUI [TextArea]

  2. Unity Input.GetMouseButtonDown 拿到鼠标按键

    //点击按键,生成子弹,并射向前方 void ShootBullet() { if (Input.GetMouseButtonDown(0)) { GameObject temp_Buller = G ...

  3. php错误等级

    E_ALL - 所有的错误和警告(不包括 E_STRICT)   E_ERROR - 致命性的运行时错误   E_WARNING - 运行时警告(非致命性错误)   E_PARSE - 编译时解析错误 ...

  4. php验证码处理

    //基本步骤 1,先创建一张指定宽度和高度的一张验证码图片 imagecreatetruecolor() 2,给验证码图片添加背景颜色 和文字颜色 imagecolorallocate() 3, 在指 ...

  5. eleme 项目使用到的库

    探索eleme用到的库 xml re库 通过regex = re.compile(pattern)返回一个pattern对象, 通过该对象匹配正则表达式的字符串, 最好在模式中使用r'some'原始字 ...

  6. [HZOI 2015]树黑白

    [题目描述] 给定一棵树,要求维护以下操作: 1.M u 将u节点反色 2.Q u 查询u到所有黑色节点距离和 [输入格式] 第一行n,m 表示节点总数和操作次数 之后n-1行,每行u,v表示两个端点 ...

  7. Python常用模块(一)

    一.time模块 time模块提供各种操作时间的函数 时间三种格式 1.时间戳 以1970年1月1日 00:00:00开始的秒数 2.本地时间 localtime,表示计算机当前的时间 3.UTC世界 ...

  8. RNQOJ [stupid]愚蠢的矿工(树形依赖背包)

    题意 题目链接 Sol 树形依赖背包板子题 树形依赖背包大概就是说:对于一个点,只有选了它的父亲才能选自身 把dfs序建出来,倒过来考虑 设\(f[i][j]\)表示从第\(i\)个节点往后背包体积为 ...

  9. (生产)axios - 请求接口

    参考:https://www.awesomes.cn/repo/mzabriskie/axios axios 介绍 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中 ...

  10. 数组k平移三种方法(java)

    上代码,本文用了三种方法实现,时间复杂度不一样,空间复杂度都是o(1): public class ArrayKMove { /** * 问题:数组的向左k平移,k小于数组长度 * @param ar ...