Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 2018年是否仍需要巴别塔?_Javascript_Babeljs - Fatal编程技术网

Javascript 2018年是否仍需要巴别塔?

Javascript 2018年是否仍需要巴别塔?,javascript,babeljs,Javascript,Babeljs,我现在正在学习JavaScript,有人说在我学习HTML、CSS和香草JavaScript之后,我需要了解ES6/ES2015。当我在Youtube上观看教程时,它说我们需要Babel或类似的东西让浏览器阅读。所以我想知道,因为那个视频并没有那么旧(但仍然很旧)。还需要巴别塔吗?还是我应该跳过巴别塔的事 是一个JavaScript-to-JavaScript编译器,有时称为transpiler,它将使用一组功能编写的代码(例如,ES2015和更高版本中的功能)转换为可在不支持这些功能的Java

我现在正在学习JavaScript,有人说在我学习HTML、CSS和香草JavaScript之后,我需要了解ES6/ES2015。当我在Youtube上观看教程时,它说我们需要Babel或类似的东西让浏览器阅读。所以我想知道,因为那个视频并没有那么旧(但仍然很旧)。还需要巴别塔吗?还是我应该跳过巴别塔的事

是一个JavaScript-to-JavaScript编译器,有时称为transpiler,它将使用一组功能编写的代码(例如,ES2015和更高版本中的功能)转换为可在不支持这些功能的JavaScript环境中运行的代码。(还有其他的,巴别塔只是一个很受欢迎的。)

您是否使用Babel将ES2015+代码传输到ES5完全取决于您自己,并取决于您希望支持的目标环境。例如,如果你想支持任何版本的IE(包括IE11),你就需要Transfile。如果您只需要支持最先进的Chrome、Firefox和edge,或者其他您可以依靠当前使用的功能(如最新的Node.js安装)的环境,则不需要

Kangax有一套JavaScript引擎和/或浏览器支持哪些更现代的JavaScript功能(不仅是ES2015,还有ES2016、ES2017等)

除了使用最新的标准化功能外,Babel(以及类似的工具)还有两种用途:

  • 您可以使用Babel(以及类似的工具)来利用可能很快就会标准化的特性,即使它们还没有得到很好的支持。例如,公共类字段的基础在很长一段时间内没有改变,但由于与公共类字段无关的原因(截至2018年6月撰写本文时),仍然处于第3阶段(并且在第2阶段和第3阶段之间来回了好几次),甚至连Chrome、Firefox等尖端浏览器都没有,和Edge还没有支持公共类字段。但如今,通过transpiler使用类字段是很常见的

  • 您可以编写自己的Babel(或类似)转换,将自己的功能添加到自己项目的JavaScript中(或使用其他人编写的功能),即使这些功能永远不会成为JavaScript的一部分或在项目之外使用

  • 不要离题——作为初学者,我建议远离工具和配置。它可以是压倒性的,特别是在JS的土地。只需专注于学习,工具将稍后提供。您可以立即开始使用ES6,无需任何工具

    一种方法是使用在线REPL或游乐场。我喜欢的一个工具是这个网站,它让您真正感受到从
    npm
    导入模块来帮助您编写代码的过程。如果您使用的是Chrome,则可以打开开发者控制台,查看从游乐场发送到开发者控制台的消息

    这是我为你准备的游乐场


    事实上,
    babel
    是一个transpiler,而且transpiler总是需要使用最先进的功能,因为所有的浏览器供应商并没有同时实现所有的语言功能。babel可以让过时的浏览器理解您闪亮的代码。继续编写新语法,并通过Babel运行它。你不需要理解或学习巴别塔。你只需要运行你的代码就可以了。哈哈,当Alpha在Alpha_Bords上发表评论的时候。但事实上,你不需要巴贝尔,除非你注意到某些浏览器不起作用。在那之前,我会完全忽略它。@smnbbrv,没想到会发生:-)非常感谢。老实说,我真的很高兴这个网站的工作方式,它给了我轻松,因为我是一个完全的网络开发初学者。但我不会滥用它,我会一直编码直到我的手指流血。哈哈,谢谢你也许这是吹毛求疵,但我想说,这样的REPL/游乐场无论如何都是一个工具,如果它支持ES2015+和其他不受支持的功能,那么它所做的事情与巴贝尔差不多。同样地,如果有人认真思考发展问题,他应该练习beeing inflowed,直到最终beeing inflowed开始变得正常。根据我自己的学习经验。在某种程度上,我开始意识到babel作为一种工具在思考javascript是什么以及它是如何工作的方面提供了优势。例如,如果你想支持任何版本的IE(包括IE11),你就需要进行Transbile。如果你只需要支持最新的Chrome、Firefox和edge,或者其他你可以依赖的功能(比如最新的Node.js安装)的环境请注意,几天前微软宣布停止IE,并部署新版本的浏览器,其基本内核将基于铬,因此从技术上讲,在使用IE(基于铬)的windows上,您未来不需要babel。Thanksher在windows central上发布了一条公告:@DineshNagari-你把IE和Edge弄糊涂了。IE永远不会是基于铬的,如果你需要支持IE(即使是最新的,IE11),你需要传输。Edge(它已经有了一个相当最新的JS引擎)正在被一个基于铬的东西所取代。我们可以肯定的是,阿纳海姆(新的边缘)将使用Blink(Chrome的渲染引擎)。我们没有得到微软的任何确认,它将使用V8(Chrome的JavaScript引擎)而不是Chakra(微软的),尽管事实上微软员工已经承诺了V8/V8项目,这表明它将使用。感谢Crowder的澄清,但是,一旦他们不赞成IE,并且当微软开始为edge渲染更新(基于V8而不是chakra)时,没有人会使用IE,而且很快他们就会积极地开发IE。(现在,我们知道他们在edge的Chromium版本中使用V8。)