ES6 Express和静态方法使用问题

时间:2016-04-26 04:49:18

标签: javascript node.js express babeljs

我正在尝试学习快递,并希望将ES6与babel一起使用。我的问题是当我使用静态方法来处理像bellow这样的请求时;

class MyCtrl {

   static index (req,res) {
        res.status(200).send({data:"json data"});
    }
}

router.get('/', MyCtrl.index)

我想知道,这(使用静态方法)是否会影响性能?我对Node.js运行时没有太多了解,但据我所知,使用静态方法经常使用某种语言(如C#)并不是一件好事。

或者是否有其他正确的方法可以使用ES6类。

1 个答案:

答案 0 :(得分:2)

ES6课程并不是一个新的结构,它只是JavaScript原型模型的一些语法糖。

所以当你做这样的事情时:

class Animal {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  static printAllowedTypes() {
    console.log('Rabbit, Dog, Cat, Monkey');
  }

  printName() {
    console.log(`Name: ${this.name}`);
  }

  printAge() {
    console.log(`Age: ${this.age}`);
  }
}

在幕后,它基本上只是转换为:

function Animal(name, age) {
  this.name = name;
  this.age = age;
}

Animal.printAllowedTypes = function() {
  console.log('Rabbit, Dog, Cat, Monkey');
};

Animal.prototype.printName = function() {
  console.log(`Name: ${this.name}`);
};

Animal.prototype.printAge = function() {
  console.log(`Age: ${this.age}`);
};

所以这是一个方便的速记,但它仍然只是使用JavaScript的原型。因此,就您的问题而言,您所做的只是将常规函数传递给router.get,因此没有任何性能差异。