我可以在Node.js中不使用Babel使用ES6 JavaScript吗?

9

我想知道在2019年现在的Node 10.15中是否可以使用ES6,因为我认为ES6现在应该是一种原生支持和实现的JavaScript功能。我在这里找到了一些答案:NodeJS plans to support import/export es6 (es2015) modules,但我不确定现在的实际状况。

我刚刚在Node中尝试使用了一些带箭头函数的ES6类:

 class Test {
     testVar = 1;
     constructor(x,y) {
        this.counter =0;
        this.x = x;
        this.y = y;
        this.increaseCounter();
        this.testVar +=1;
     }

     getCounter = () => {
        console.log("Counter:", this.counter);
     }

     increaseCounter = () => {
        this.counter += 1;
     }
 }

我遇到了一个错误:
     getCounter = () => {
                ^

SyntaxError: Unexpected token =

同时,我无法创建类实例变量作为类的全局变量(并且每次创建新的类实例时将testVar增加1..)这在Javascript类中通常如何实现?
我知道有一个Babel编译器软件包支持此功能并以某种方式转换代码,但是ES6现在不应该被原生支持了吗?

2
getCounter = () => { 在这个上下文中,这不是一个有效的ES6开始。 - Jaromanda X
但这是有效的Stage 3 Proposal - 您可以使用命令行标志--harmony在节点中启用它。 - Jaromanda X
@JaromandaX 这个方法是添加到 Test.prototype 还是直接添加到类的每个实例中? - adiga
@JaromandaX 如果使用 --harmony 标识,它可以与箭头函数一起工作。 - MMMM
是的,我知道@user2774480...但那仍然不是ES6,即ES2015(第六版)...它可能是ES2019(第十版)或更高版本,因为它不在ES2018(第九版)中 - ECMA并没有在2015年停止开发javascript...自那以后已经发布了3个以上的规范。 - Jaromanda X
2个回答

4

我可以在Node.js中使用ES6 JavaScript而不需要Babel吗?

是的,你可以。Node支持所有JS(ECMAScript)功能,直到ES2018:https://node.green/

你应该像这样创建你的方法:

class Test {
  testVar = 1;
  constructor(x, y) {
    this.counter = 0;
    this.x = x;
    this.y = y;
    this.increaseCounter();
    this.testVar += 1;
  }

  getCounter() {
    console.log("Counter:", this.counter);
  }

  increaseCounter() {
    this.counter += 1;
  }
}

不需要创建一个只用于保存匿名箭头函数的属性。

因为它们是第三阶段提案,目前不在ECMA规范中。 - Jaromanda X
好的,谢谢提供信息。那么,没有像Java中的类变量吗?那我该如何增加全局类计数器变量呢? - MMMM
你是指静态属性吗? - Seblor
嗯,我可能是指静态属性,抱歉 ;) 在Java中,它们被称为类变量。 - MMMM
1
@Seblor - 我不是故意吹毛求疵...好吧,我是的 :D - Jaromanda X
显示剩余5条评论

0

截至Nodejs 11.11.0,类字段不是ECMAscript规范的一部分....但它们是第3阶段的提案

您可以通过使用--harmony命令行参数来启用某些(全部?)此类建议性功能

从目前的情况来看,类字段似乎也不是ES2019(第10版)的一部分。虽然我找不到该文档(只能找到ES2018(第9版)),但https://node.green/中的表格显示了一个名为ESnext的部分,其中包含类字段,该部分位于ES2019部分之后


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接