将 ES6 class 分解成多个文件

Breaking up an ES6 class into multiple files

使用 JavaScript 'class'(我知道不是真正的 class),可以通过将方法放在单独的文件中来分解一个大定义,如下所示:

var Foo = function () {
  console.log('initializing foo');
};

Foo.prototype.render = require('./render');

但是对于 ES6 classes,看起来语法排除了这种方法——似乎这些方法总是必须在 class 块中写成函数文字。

我在 6to5 REPL 中 tried this:

class Foo {
  constructor() {
    console.log('initializing foo');
  }

  require('./render');
}

...但它出错了。

例如,CoffeeScript 的 class 语法允许我这样做:

class Foo
  constructor: ->
    console.log 'initializing foo'

  render: require './render'

真的没有办法用 ES6 classes 做到这一点吗?

这个呢?

class Foo {
  constructor() {
    console.log('initializing foo');
  }

  render() { 
    require('./render'); 
  }
}

类 只是语法糖。所以你可以做

class Foo {
  constructor() {
    console.log('initializing foo');
  }
}

Foo.prototype.render = require('./render');

或者您可以创建 getter:

class Foo {
  constructor() {
    console.log('initializing foo');
  }

  get render() {
    return require('./render');
  }
}