- BabelJs 教程
- BabelJs - 主页
- BabelJs - 概述
- BabelJs - 环境设置
- BabelJs-CLI
- BabelJs - ES6 代码执行
- BabelJs - 使用 Babel 6 进行项目设置
- BabelJs - 使用 Babel 7 进行项目设置
- 将 ES6 功能转换为 ES5
- 将 ES6 模块转译为 ES5
- 将 ES7 功能转换为 ES5
- 将 ES8 功能转译为 ES5
- BabelJs - Babel 插件
- BabelJs - Babel Polyfill
- BabelJs - Babel CLI
- BabelJs - Babel 预设
- 使用 Babel 和 Webpack
- 使用 Babel 和 JSX
- 使用 Babel 和 Flow
- 使用 BabelJS 和 Gulp
- BabelJs - 示例
- BabelJs 有用的资源
- BabelJs - 快速指南
- BabelJs - 有用的资源
- BabelJs - 讨论
BabelJS - Babel 预设
Babel 预设是 babel-transpiler 的配置详细信息,告诉它以指定的模式进行转译。以下是我们将在本章中讨论的一些最流行的预设 -
- ES2015
- 环境
- 反应
我们需要使用具有我们想要转换代码的环境的预设。例如,es2015预设会将代码转换为es5。预设值env也将转换为es5。它还具有附加功能,即选项。如果您希望最新版本的浏览器支持该功能,则仅当这些浏览器不支持该功能时,babel 才会转换代码。使用 Preset React,Babel 将在反应时转译代码。
要使用预设,我们需要在项目根文件夹中创建 .babelrc 文件。为了展示工作原理,我们将创建一个项目设置,如下所示。
命令
npm init
我们必须按如下方式安装所需的 babel 预设以及 babel cli、babel core 等。
通天塔 6 包
npm install babel-cli babel-core babel-preset-es2015 --save-dev
巴别塔 7 包
npm install @babel/cli @babel/core @babel/preset-env --save-dev
注意- babel-preset-es2015 从 babel 7 开始已弃用。
es2015 或 @babel/env
在项目的根目录中创建 .babelrc 文件 (babel 6) -
在.babelrc中,预设是es2015。这是向 babel 编译器表明我们希望将代码转换为 es2015。
对于 babel 7,我们需要使用预设如下 -
{ "presets":["@babel/env"] }
这是安装后的 package.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 预设,您可以指定最终代码要转译到的环境。
我们将使用上面创建的相同项目设置,并将预设从 es2015 更改为 env,如下所示。
此外,我们还需要安装 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环境进行定向编译,如下图
最终编译出来的代码如下图所示。
命令
npx babel main.js --out-file main_env.js
main_env.js
"use strict"; let arrow = () => { return "this is es6 arrow function"; };
Babel 根据当前版本的 Node.js 编译代码。
反应预设
当我们使用Reactjs时,我们可以使用react预设。我们将研究一个简单的示例,并使用反应预设来查看输出。
要使用预设,我们需要安装 babel-preset-react (babel 6),如下所示 -
npm install --save-dev babel-preset-react
对于 babel 7,如下 -
npm install --save-dev @babel/preset-react
babel6 对 .babelrc 的更改如下:
对于通天塔 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 中的代码通过预设:react 转换为reactjs 语法。