将 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');
}
}
使用 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');
}
}