为什么我需要Babel JS?

时间:2016-09-08 23:57:51

标签: babeljs

我很难在这里理解Babel的重要性......所以ES6出现并为我们提供了胖箭头功能,更短的语法等等。那么为什么我们需要将ES6编译成传统的JS?是因为有旧的浏览器无法解释新的JS语法?或者它与保持源代码一致有关?我知道一点菜鸟问题 - 但是,嘿,我是菜鸟! 有任何见解赞赏!

6 个答案:

答案 0 :(得分:16)

虽然这里的答案都是正确的,但Babel不仅仅是关于ES6(ES2015)。 ECMA标准委员会已同意发布JavaScript语言的年度更新。 Babel将始终整合标准,而我们不知道所有浏览器是否会,以及他们是否能够跟上不断变化的标准。

使用像Babel这样的转换器,我们可以保持领先于Web浏览器并在发布时使用ECMAscript的新功能,而不是等待浏览器制造商集成功能,使用polyfill或其他任何东西。它还允许最终用户自定义他们想要使用的功能并构建他们自己的语言版本。

要听到巴贝尔的创造者谈论这个,你可以听this JavaScript Jabber episode

答案 1 :(得分:3)

并非所有浏览器都支持ES6。随着像React这样的转换。

http://www.webbrowsercompatibility.com/es6/desktop/

答案 2 :(得分:2)

现在大多数现代浏览器几乎都支持es6。从96%到99%的支持。

https://kangax.github.io/compat-table/es6/

缺少的主要是ES6模块。目前只有Safari支持ES6模块。对ES6模块的支持应该在Google Chrome 60中提供。

为了让ES6代码运行,您必须使用Browserify或Webpack等捆绑器将ES6代码模块组合成一个JavaScript文件。我很幸运使用Webpack 3.0进行捆绑。

Babel负责将新语言功能转换为旧语言。

您可以编写仅使用捆绑器但不使用Babel在许多浏览器上运行的代码。通过使用Babel进行转换,您的代码变得更加复杂,所以只有在需要时才应该这样做。

答案 3 :(得分:0)

你做对了。有大量的浏览器无法支持/部分支持es6,因此您仍需要在未来几年内将其解释为传统的js。 特别是当客户抱怨您的网站无法在他们的IE6浏览器上工作时

答案 4 :(得分:0)

我可能回答这个问题的时间太晚了,但是对我来说,主要原因是因为即使Node版本12也不支持ES6模块系统(导入和导出关键字)。

Babel将ES6语法转换为CommonJS,从而节省了很多麻烦

答案 5 :(得分:-3)

根据我的经验,没有充分的理由使用巴别塔。打字稿在各方面都很出色。