Babel是用来生成向后或向前兼容的Javascript代码的吗?

y3bcpkx1  于 2022-12-28  发布在  Babel
关注(0)|答案(1)|浏览(127)

我一直在通读一本叫做You don't know JS的书,有一件事我无法理解,那就是向后兼容和向前兼容Javascript的概念。
据我所知:
1.* * 向后兼容:*一旦在Javascript规范中添加了一些内容,将来就不会成为无效的JS
1.
* 向前兼容:在程序中包含语言的新添加项不会导致该程序在旧JS引擎中运行时中断
Javascript是 * 向后兼容 * 和
向前兼容 *。这意味着,虽然在程序中包含新功能可能会破坏程序(向前兼容),但Javascript引擎将在未来永远支持旧语法(向后兼容)。
为了解决向前兼容问题,开发人员使用
蒸发polyfills将新语法转换为旧Javascript引擎支持的旧语法。
所以如果发汗被用来把代码转换成向前兼容的代码,这是否意味着巴别塔被用来解决向前兼容的问题,而不是向后兼容的问题?
这来自于巴别塔网站上的official doc
Babel是一个工具链,主要用于将ECMAScript 2015+代码转换为当前和旧版本浏览器或环境中的
向后兼容**版本JavaScript。
我一定错过了什么,需要一些澄清,如何思考通过这一点。

    • 编辑1**

我想在这里引用书中的部分内容会有所帮助:
通常,与语法相关的转发兼容性问题通过使用transpiler(最常见的是Babel(https://babeljs.io))将新的JS语法版本转换为等效的旧语法来解决。
开发人员应该专注于编写干净、新的语法形式,让工具负责生成该代码的转发兼容版本,该版本适合部署和运行在支持最早的JS引擎环境中。

7bsow1i6

7bsow1i61#

我相信您的困惑根源于操作环境或语言以及各个脚本本身的向前和向后兼容性术语的混淆。
在You Don't KnowJS文档中,作者将语言的实现描述为向后兼容的整体,这与许多早期游戏机发布的视频游戏相同(如PlayStation和Xbox)能够在其最近的继任者上播放(PlayStation 2和Xbox 360),原因是主机(及其架构、操作系统等)向后兼容。当应用于JS时,这意味着实现较新版本(如ECMAScript 2015+)的浏览器将完全支持使用较旧版本编写的代码。
另一方面,Babel指的是代码本身,并且能够创建一个向后兼容的版本,例如,可以在旧的浏览器上运行。这类似于能够通过某个引擎处理XBox360游戏(iidoe.Babel),并让它给予你一个功能齐全的游戏,在你原来的Xbox上玩。这显然是一个更困难的问题,但由于JS向前兼容,这是必需的。

相关问题