详解babel8.X版本用法填坑

  话说在前端这一块有一件让人非常匪夷所思的事情,就是包括webpack,包括几乎所有常用的前端模块(包),只要有大版本的更新,必然跟之前的版本大变脸,连api都给你变了,于是出现各种坑,真不知道为什么要这么设计。要知道在服务端的技术里,不管是Java还是.NET,技术都是有极好的延续性的,不可能说版本一更新,之前的api都变了,以前写的程序就各种报错,不能运行。新版本往往只是在旧版本的基础上添加一些东西,而不是颠覆。

  好了,吐槽完毕,归入正题。

  今天要记录的是babel 8.X版本,以及相关包的用法。之所以要说这个,原因很简单,因为babel8 跟babel7真的是大变,又是一系列的坑。

  咱们先把babel7.X版本下要用的包和各种配置先罗列出来,然后再说明babel8.x的用法。这样也好有个对比。

  一、babel7.X版本

  1.要安装的包

   第1套包:npm I babel-core@7 babel-loader babel-plugin-transform-runtime –D

第2套包:npm I babel-preset-env babel-preset-stage-0 –D(注意是-零,不是字母o)  

   这里babel-loader一定要加版本号7,否则下载的将是最新版本8

  2.webpack.config.js配置文件中,rules节点的配置写法  

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

  注意:

    ①虽然是2套包,但对于loader来说只有一个,所以urse属性只有一个loader。

    ②exclude是排除的意思。这个属性的意思就是不要去匹配node_modules目录中的文件。

    ③node_modules中的文件都已经是现成的包了,人家都打包好了,不需要我们再去打包。

    ④而且该目录中代码文件太多,排除掉它,也能提高很高的打包性能

  3.配置.babelrc文件  

    {

    “presets” : [“env”, “stage-0”],

    “plugins” : [“transform-runtime”]

    }

  注意:

    ①"presets"是用来配置处理“语法”的项。这2套包中,带有preset的包是babel-preset-env 和 babel-preset-stage-0 ,他们的名字分别是env/stage-0,前边的babel-preset是前缀。

    ②"plugins"是用来配置插件的项。这2套包中,只有babel-plugin-transform-runtime是插件,并且该插件的名字是“transform-runtime”

  二、使用babel8.X版本  

  先从大体上介绍一下babel8的变化点。

    第一,各个包的名字变了,都以@符号开头。这个变化带来2个影响。其一,以前每个包在node_modules目录下都是一个独立的文件夹;现在则在node-modules目录下有个叫“@babel”的目录,这里要安装的所有babel包,都在这个@babel目录下保存。其二,在配置的时候,写法完全变了。

    第二,有一些包被彻底废弃。比如在babel7.X版本中用到的babel-preset-stage-0

    第三,有一些新的包必须引入进来才可以。

  具体用法如下:

  1.必须安装的包如下:

  

  需要注意的是,这些@开头的包,在实用npm安装时,包名必须用引号引住,否则npm会把它当做不可识别的字符。例如:

  npm i babel-loader '@babel/core' -D

  babel-loader没有@符号,所以不需要引号包住;@babel/core则需要用引号包住。其他以此类推

  这里小版本号就不要计较了,只要大版本号能对上就都一样。

  2.各个包的作用如下   

  • babel-loader:加载器
  • @babel/core:babel核心包,babel-loader的核心依赖
  • @babel/preset-env:ES语法分析包
  • @babel/runtime和@babel/plugin-transform-runtime:babel 编译时只转换语法,几乎可以编译所有时新的 JavaScript 语法,但并不会转化BOM(浏览器)里面不兼容的API。比如 Promise,Set,Symbol,Array.from,async 等等的一些API。这2个包就是来搞定这些api的。
  • @babel/plugin-proposal-class-properties:用来解析类的属性的。

  3.配置webpack.config.js。由于“babel-lodaer”包名字没变,api写法也没变,还是那么写   

  { test: /\.js$/, use: 'babel-loader', exclude: /node_modules/},//处理高级ES语法的babel_lodaer

  4.添加.babelrc配置文件,并在该文件中写下如下配置信息   

    {

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

   "plugins": ["@babel/plugin-transform-runtime", "@babel/plugin-proposal-class-properties"]

    }

  这些插件及配置方法,基本上就是babel8版本下必须安装的包了。接下来npm run dev就该能运行起来项目了

(0)

相关推荐

  • ES6 - 基础学习(1): 开发环境搭建

    现在Chrome浏览器已经很好的支持ES6了,但有些低版本的浏览器或其他浏览器还是不支持ES6的语法,因此实际项目开发或上线过程中就需要把ES6的语法转变成ES5的语法.项目开发过程中 Webpack ...

  • Jest和enzyme 前端单元测试工具

    什么是Jest? Jest是一个令人愉悦的JavaScript测试框架,其重点是简单性. 它适用于使用以下项目的项目:Babel,TypeScript,Node,React,Angular,Vue等! ...

  • 你必须要知道的babel二三事

    你必须要知道的babel二三事

  • babel 版本原因运行报错,解决办法

    学习 babel 时,遇到的问题,使用旧版本 babel 命名规则安装后运行报错,初步查找到原因是因为 babel 各个preset和plugin新旧不同版本之间存在兼容问题,提示使用 npx bab ...

  • JS模块化

    一 模块化简介 1 模块化产生的背景 随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. Javascript模块化编程,已经成为一个迫 ...

  • webpack配置项目

    一.项目初始化 npm init -y npm install --save-dev webpack npm install webpack-cli -D 创建 webpack.config.js文件 ...

  • webpack的入门实践,看这篇就够了

    我会将所有的读者概括为初学者,即使你可能有基础,学习本节之前我希望你具有一定的JavaScript和node基础 文中的 ... ...代表省略掉部分代码,和上面的代码相同 文中的文件夹如果没有说创建 ...

  • 配置vue的jsx写法以及postcss

    继续上一篇 https://www.cnblogs.com/chenyingying0/p/12798050.html 安装一些组件 cnpm i postcss-loader autoprefixe ...

  • 水产养殖中常用的无机肥有哪些?用法用量多少?水产研究社为您详解常用的无机肥用法用量

    水产研究社 水产养殖,病害防治,水质调节,技术交流,生态养鱼,养虾,养蟹,健康渔业,您值得信赖的水产小帮手. 229篇原创内容 公众号 无机肥为矿质肥料,也叫化学肥料,简称化肥. 它具有成分单纯,含有 ...

  • 详解ACR13.1版本颜色分级

    详解ACR13.1版本颜色分级

  • 正确认识和详解鲁班尺的专业用法

    鲁班尺,中国古代风水工具.也称鲁般尺.鲁般真尺.门公尺.门光尺.八字尺等,相传为我国春秋时期鲁班发明.鲁班,姓公输,名般,又称公输子.公输盘.班输.鲁般. "般"和"班& ...

  • 详解RANK函数公式用法

    RANK(number,ref,[order]) 看着这个公式也不难,那我就稍微给各位可爱们讲解一下下好了.RANK函数的作用,就是返回某数字在一列数字中相对于其他数值的大小排名,number就是需要 ...

  • 它是医家眼中的补气圣药,本文为您详解它的神奇用法!

    张胜兵中医 2021-10-25 医道之漫漫,苦心而求索,常待东方白,不为世俗同. 张胜兵:武汉知名中医,中医研究生,成名代表作<医门推敲>五部,<攻癌救命录>,<张胜兵 ...

  • VLOOKUP函数从入门到精通,15种用法详解。

    VLOOKUP函数从入门到精通,15种用法详解。

  • 八字十神详解与用法

    (一)八字十神详解   十神是-富贵贫贱.吉凶祸福的主要符号 十神是-富贵贫贱.吉凶祸福的主要符号,每一干支所对应的十神均包含了日主各方面的具体事象.很多易友钻研四柱多年,还难以断准命,主要是忽略了对 ...

  • 多条件函数or用法详解,搭配IF函数功能很强大,你知道怎么用吗

    Excel中我们经常利用函数进行各类的数据处理,在数据处理的过程中,我们也经常会碰到各种条件数据的判断,今天我们就来学习一个特殊的函数组合:IF+OR函数的嵌套用法,看看函数嵌套功能有多强大. 一:O ...

  • 生菜籽黄瓜籽黑芝麻用法用量 详解用量用法及作用效果

    世界之大,无奇不有,我们和动植物共同生长在同一个地球之上,每一种生物的存在都有着特殊的意义,我们人类是站在食物链的最顶端,各种食材都被我们食用,今天就让我们一起来了解一下生菜籽黄瓜籽黑芝麻的用量用法以 ...