babel的认识

一.简介:

babel官 :https://www.babeljs.cn/
githup:https://github.com/babel/babel
Babel 是一个工具链,主要用于将 ECMAScript 2015+ 版本的代码转换为向后兼容的 JavaScript 语法,以便能够运行在当前和旧版本的浏览器或其他环境中。
我这里只是介绍基本的使用方法,详细的可以到官 查看。

1.1基本实现的效果:

1.2 整个设置过程:

运行以下命令以安装软件包:
(这些命令是通过的,哪些不满足请自己安装)

.babelrc 文件(根目录下),vue项目开发使用的配置如下:

.babelrc 文件(根目录下),React项目开发使用的配置如下:

上面的浏览器列表只是一个任意示例。您需要进行调整以适合您要支持的浏览器。

1.3 babel7

@ 符 是什么是 babel 7 的一大调整,原来的 babel-xx 包统一迁移到babel 域下 – 域由 @ 符 来标识,一来便于区别官方与非官方的包,二来避免可能的包命名冲突。

二.配置文件.babelrc

主要是对预设()和插件()进行配置,基本格式:

2.1babel转译器

不同的转译器作用不同的配置项,大致可分为以下三种:

2.1.2 语法转义器

主要对最新的语法糖进行编译,并不负责转译新增的和全局对象。例如就可以被编译,而/等并不能被编译。常用到的转译器包有,、、、、等。在实际开发中可以只选用babel-preset-env来代替余下的,但是还需要配上javascirpt的制作规范一起使用,同时也是官方推荐

2.1.2 补丁转义器

主要负责转译新增的和全局对象,例如这个插件能够编译,同时也可以引入进一步对这类用法保证在浏览器的兼容性。 会被编译成以下代码:

2.1.3 jsx和flow插件

这类转译器用来转译JSX语法和移除类型声明的,使用Rect的时候你将用到它,转译器名称为

2.2预设(Presets)

2.2.1官方针对常用环境编写了一些 preset

@babel/preset-env
@babel/preset-flow
@babel/preset-react
@babel/preset-typescript

2.2.2 Stage-X (实验性质的 Presets)

从 Babel v7 开始,所有针对处于标准提案阶段的功能所编写的预设(stage preset)都已被弃用。
stage-x preset 中的任何语法转换都是对语言本身的更改,而这些更改尚未被纳入 JavaScript 标准(例如 ES6/ES2015)

  • Stage 0 – 设想(Strawman):只是一个想法,可能有 Babel插件。
  • Stage 1 – 建议(Proposal):这是值得跟进的。
  • Stage 2 – 草案(Draft):初始规范。
  • Stage 3 – 候选(Candidate):完成规范并在浏览器上初步实现。
  • Stage 4 – 完成(Finished):将添加到下一个年度版本发布中。

处于 stage-3 之前的任何提案,请务必谨慎使用

2.2.3Preset 的路径

如果 preset 在 npm 上,你可以输入 preset 的名称,babel 将检查是否已经将其安装到 node_modules 目录下了

你还可以指定指向 preset 的绝对或相对路径。

2.2.4 Preset 的短名称

如果 preset 名称的前缀为 babel-preset-,你还可以使用它的短名称:

2.2.5 Preset 的排列顺序

Preset 是逆序排列的(从后往前)。

将按如下顺序执行: c、b 然后是 a。
这主要是为了确保向后兼容,由于大多数用户将 “es2015” 放在 “stage-0” 之前。

2.2.6 Preset 的参数

插件和 preset 都可以接受参数,参数由插件名和参数对象组成一个数组,可以在配置文件中设置。

如果不指定参数,下面这几种形式都是一样的:

要指定参数,请传递一个以参数名作为键(key)的对象。

2.3 插件(plugins)

官方文档
Babel 是一个编译器(输入源码 => 输出编译后的代码)。就像其他编译器一样,编译过程分为三个阶段:解析、转换和打印输出。
除了一个一个的添加插件,你还可以以 preset 的形式启用一组插件。

2.4 插件和预设选项

官方文档
官方推荐使用babel-preset-env来替代一些插件包的安装(es2015-arrow-functions,es2015-block-scoped-functions等等),并且有如下几种配置信息,介绍几个常用的

2.4.1 targets

.babelrc

targets可以制定兼容浏览器版本,如果设置了browsers,那么就会覆盖targets原本对浏览器的限制配置。
targets.node对node某一个版本进行编译
modules通常都会设置为false,因为默认都是支持CommonJS规范

2.4.2 ignore

主要作用就是可以指定不编译哪些代码
.babelrc

2.4.2 minified

主要设置编译后是否是压缩,boolean类型,如果使用babel-cli进行打包编译文件这个配置项能够起到作用,但是目前大部分还是会依赖第三方打包工具,例如webpack,所以这个配置参数一般不用设置,webpack插件中的UglifyJsPlugin做了压缩的工作。

2.4.2 comments

在生成的文件中,不产生注释,boolean类型,webpack插件中的UglifyJsPlugin也同样集成了这个功能。

2.4.3 env


.babelrc

3. 常用的

babel7

3.1 @babel-core

babel代码的核心

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年2月5日
下一篇 2020年2月5日

相关推荐