BabelJS - Babel Presets

Babel预设是babel-transpiler的配置详细信息,告诉它在指定模式下将其转换.以下是我们将在本章讨论的一些最受欢迎的预设 :

  • ES2015

  • Env

  • React

我们需要使用具有我们想要代码的环境的预设被转换.例如, es2015 预设会将代码转换为 es5 .值为 env 的预设也将转换为 es5 .它还具有附加功能,即选项.如果您希望在最新版本的浏览器上支持该功能,只有在这些浏览器上不支持功能时,babel才会转换代码.使用Preset react ,Babel将在何时做出反应时转换代码.

要使用Presets,我们需要在项目根文件夹中创建.babelrc文件.为了显示工作原理,我们将创建一个项目设置,如下所示.

命令

npm init


工作预设

我们必须按照以下方式安装所需的babel预设以及babel cli,babel core等.

Babel 6 package

npm install babel-cli babel-core babel-preset-es2015 --save-dev

Babel 7个套餐

npm install @babel/cli @babel/core @babel/preset-env --save-dev

注意 :  babel-preset-es2015已被弃用babel 7以后.

es2015或@ babel/env

创建.babelrc文件在项目的根目录(babel 6) :

Babelrc env

在.babelrc中,预设为es2015.这是对babel编译器的指示,我们希望将代码转换为es2015.

对于babel 7,我们需要使用预设,如下 :

{
   "presets":["@babel/env"]
}

这是安装后的package.json :

安装后的Json包装

由于我们在本地安装了babel,因此我们在package.json的scripts部分添加了babel命令.

让我们一个简单的例子来检查转换使用预设的es2015.

示例

main.js

let arrow = () => {
   return "this is es6 arrow function";
}

透明到es5,如下所示.

命令

npx babel main.js --out-file main_es5.js

main_es5.js

"use strict";

var arrow = function arrow() {
   return "this is es6 arrow function";
};

Env

使用Env预设,您可以指定要转换为最终代码的环境.

我们将使用上面创建的相同项目设置,并将预设从es2015更改为env,如下所示.

更改预设Es2015

此外,我们需要安装babel-preset-env.我们将执行下面给出的命令来安装它.

命令

npm install babel-preset-env --save-dev

我们将再次编译main.js并查看输出.

main.js

let arrow = () => {
   return "this is es6 arrow function";
}

命令

npx babel main.js --out-file main_env.js

main_env.js

"use strict";

var arrow = function arrow() {
   return "this is es6 arrow function";
};

我们已经看到转换后的代码是es5.如果我们知道代码将要执行的环境,我们可以使用此预设来指定它.例如,如果我们将浏览器指定为chrome和firefox的最后一个版本,如下所示.

浏览器

命令

npx babel main.js --out-file main_env.js

main_env.js

"use strict";

let arrow = () => {
   return "this is es6 arrow function";
};

我们现在正在获取箭头函数语法.它没有被转换成ES5语法.这是因为我们希望代码支持的环境已经支持箭头函数.

Babel负责使用babel-preset-env基于环境编译代码.我们还可以根据nodejs环境定位编译,如下所示

Nodejs Environment

代码的最终编译如下所示.

命令

npx babel main.js --out-file main_env.js

main_env.js

"use strict";

let arrow = () => {
   return "this is es6 arrow function";
};

Babel根据当前版本的nodejs编译代码.

React Preset

当我们使用Reactjs时,我们可以使用react预设.我们将使用一个简单的示例并使用react预设来查看输出.

要使用预设,我们需要安装babel-preset-react(babel 6),如下所示;

npm install --save-dev babel-preset-react

对于babel 7,它是如下 :

npm install --save-dev @babel/preset-react

对于babel6&minus,.babelrc的更改如下:

改变Babelrc

对于babel 7

{
   "presets": ["@babel/preset-react"]
}

main.js

<h1>Hello, world!</h1>

命令

npx babel main.js --out-file main_env.js

main_env.js

React.createElement(
   "h1",
   null,
   "Hello, world!"
);

main.js中的代码转换为reactjs语法与preset:react.