【问题标题】:Why Babel doesnt use javascript class when transpiling to ES2015?为什么 Babel 在转译到 ES2015 时不使用 javascript 类?
【发布时间】:2018-08-27 12:36:30
【问题描述】:

我最近一直在尝试在线 Babel 转译工具,我注意到在转译一个类到 ES2015 时,它不使用 javascript 类,而是创建 var _createClass = function () {... 样板:Demo

然而,在 ES2015 中添加了 javascript class 关键字。 Source

javascript 类仅在勾选 ES2016 时使用。

这是为什么呢?

【问题讨论】:

  • 这就是 babel 的重点:生成可以在旧浏览器上运行的代码
  • 您选择了哪些具体设置?
  • @Bergi 换行es2015仅限
  • @YoukouleleY 作为输入格式还是输出格式?您可以将永久链接发布到您的示例吗?
  • @Bergi 问题已编辑

标签: javascript ecmascript-6 babeljs


【解决方案1】:

我注意到在将类转换为 ES2015 时,它不使用 javascript 类:https://babeljs.io/repl#?presets=es2015&…

您没有转译到 ES2015,而是将 ES2015 转译到旧版本。 ES2015 preset 选择为 ES2015 内容生成 ES3/5 代码的所有转换。

javascript 类仅在勾选 ES2016 时使用。

是的,当您只转换 ES2016(或更高版本)内容时,它保留了 ES2015 的 class 语法和其他功能。

【讨论】:

    【解决方案2】:

    然而,在 ES2015 中添加了 javascript class 关键字

    是的,关键字是在 ES2015 上定义的,class 在此之前已经是保留字,但实际实现是另一回事。正如@AshKander 在他们的评论中提到的那样,使用带有特定目标的 babel 的目的是让该代码在支持该目标的所有浏览器上运行。

    List of reserved keywords (present and future)

    【讨论】:

      猜你喜欢
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-03
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多