dob*_*ler 3 javascript ecmascript-6 babeljs
在这个简单的Babel(6.1.18)示例babel --presets es2015 test.js
转换中:
'use strict'; // enable strict mode
(function () {
const A = 3;
}());
Run Code Online (Sandbox Code Playgroud)
至
'use strict' // enable strict mode
;
(function () {
var A = 3;
})();
Run Code Online (Sandbox Code Playgroud)
这主要是出于好奇,但我有兴趣更好地理解为什么: - 第一行中分号的位置已被移到一个单独的行 - 生命的语法已从更改(function () {}());
为(function () {})();
一个抽象语法树的不挽留格式化信息,例如主叫括号是否外部或分组运算符内.实际上,分组运算符((...)
)甚至没有在AST中表示.
这就是为什么人们正在开发一个具体的语法树实现,它将包含这些信息,然后代码生成器可以使用什么来更接近原始源代码.
如果代码的那部分没有改变(例如重铸),有些工具可以重用原始代码,但是因为Babel主要专注于浏览器的转换代码,所以这可能不太重要.现在,Babel变得更像一个平台,这可能会改变.