📜  ES6 中的通天塔

📅  最后修改于: 2022-05-13 01:56:39.703000             🧑  作者: Mango

ES6 中的通天塔

Babel 转译器是一个免费的开源工具,可将 ECMAScript 2015 (ES6) 代码转换为可在新旧浏览器上运行的向后兼容的 JavaScript 版本。

编译流程

JavaScript 是浏览器可以理解的语言。我们使用各种浏览器来运行我们的应用程序,包括 Chrome、Firefox、Internet Explorer、Microsoft Edge、Opera 和 UC 浏览器。从 ES5 开始,我们就有了 ES6、ES7 和 ES8。作为 ES6 版本的一部分,引入了许多尚未被所有浏览器完全支持的新特性。目前还不确定所有浏览器何时能够支持所有发布的 ES 版本。如果我们计划在我们的代码中使用 ES6 或 ES7 或 ES8 功能,由于缺乏对新功能的支持,代码可能会在某些旧浏览器中中断。因此,我们需要一个工具来在 ES5 中编译我们的最终代码。这就是巴别塔的用武之地。

转译:将编程语言翻译成特定的目标语言称为转译。   Babel-transpiler 可以解析现代 JavaScript 代码并使用旧的语法结构重写它,这样它也可以在过时的浏览器上工作。除了语法结构和运算符之外,语言增强还可能包括函数。例如,数学。 trunc(n) 删除数字的小数部分,例如 Math。 trunc(1.47) 返回 1。一些(过时的)JavaScript 引擎不支持 Math。 trunc,所以这样的代码会失败。由于我们讨论的是新函数,而不是语法更改,因此无需转译任何内容。我们需要做的就是声明函数。当新特性是方法或对象时,我们需要使用 Babel-polyfill 和 transpilation 以使其在旧浏览器上工作。

让我们考虑 ES6 的箭头函数特性来理解 Babel。例如,您可能想要这个箭头函数Javascript 代码

Javascript
(x) => x + 1;


Javascript
"use strict";
  
(function (x) {
  
  return x + 1;
  
});


Javascript
"use strict";
  
(function (x) {
  
  return x + 1;
  
});


被编译成浏览器支持的 JavaScript 代码:

Javascript

"use strict";
  
(function (x) {
  
  return x + 1;
  
});

该过程包括三个主要步骤:

1. 解析: Babel 获取源代码并将其解析为 AST(抽象语法树)。 AST 是一种将源代码结构表示为树的数据结构。

2. 转换: Babel 转换最后一步的 AST 并对其进行操作,使得生成的 AST 代表浏览器兼容的代码。

3. 代码生成:浏览器支持的代码是从 Babel 中最后一步生成的 AST 派生出来的。

Javascript

"use strict";
  
(function (x) {
  
  return x + 1;
  
});