【发布时间】:2017-10-13 14:30:23
【问题描述】:
我已经使用Babel 有一段时间了,我一直认为 Babel 是一个 transpiler,用于将我的 ES6 和 ES7 JavaScript 转换为 ES5 JavaScript,因为我假设您可以在技术上将 ES5 和 ES6 视为两种不同的语言。
但是,我不禁注意到 Babel 的网站标题将其描述为 compiler,我认为这与 transpiler 非常不同。
Babel 是 transpiler 还是 compiler,或者可能同时提供这两种选择?还是网站的标题完全不正确?
披露:我知道这听起来像是一个非常迂腐的问题,但我正在编写与 Babel 相关的文档,并且我想确保我的描述是准确的
【问题讨论】:
-
转译器是编译器。
-
哦,我以为编译器将源代码转换为可执行代码,而转译器将代码转换为另一种语言。那么转译器是编译器的一种形式,那么呢?
-
它是一个转译器,因为编译器将 HLL 更改为 LLL。但是转译器有时也称为source-to-source compiler,因此您可能会争辩说 babel 是编译器,因为转译器是编译器的 type
-
编译器的标准定义是在语言之间翻译的东西(尽管通常用它来表示目标语言是 ASM 或字节码之类的情况)。所以这包括转译器作为一个子集。
-
啊,我明白了,谢谢您的意见。如果你们中的任何一个想提交答案,这两个答案都足以回答我的问题。
标签: javascript ecmascript-6 babeljs