在现有项目中使用 babeljs 编译文件
Using babeljs compiled files with existing project
我有一个简单的 class 是用 ES6 写的
class MyClass {
constructor() {
this.firstVar = 'a';
this.secondVar = 'b';
}
get first() { return this.firstVar; }
set first(val) { this.firstVar = val; }
get second() { return this.secondVar; }
set second(val) { this.secondVar = val; }
allValues() {
return this.firstVar + this.secondVar;
}
}
export { MyClass };
我通过 babel MyClass.es6 > MyClass.js
将该代码编译为 ES5,然后尝试在我现有的 ES5 代码库中使用它:
var t = require('./MyClass');
console.log(t.allValues());
但我收到一条错误消息,指出 t 没有方法 allValues。我正在尝试做的事情可行吗?
类 必须实例化。您永远不会创建 MyClass
的实例。您还错误地导入了它。您正在将 MyClass
导出为 命名导出 ,并且必须将其导入。
在目前的形式下,你必须做
var MyClass = require('./MyClass').MyClass;
var t = new MyClass();
console.log(t.allValues());
或者您可以将其导出为默认导出:
export default MyClass;
在这种情况下你可以做
var t = require('./MyClass');
(至少有 Babel)
我有一个简单的 class 是用 ES6 写的
class MyClass {
constructor() {
this.firstVar = 'a';
this.secondVar = 'b';
}
get first() { return this.firstVar; }
set first(val) { this.firstVar = val; }
get second() { return this.secondVar; }
set second(val) { this.secondVar = val; }
allValues() {
return this.firstVar + this.secondVar;
}
}
export { MyClass };
我通过 babel MyClass.es6 > MyClass.js
将该代码编译为 ES5,然后尝试在我现有的 ES5 代码库中使用它:
var t = require('./MyClass');
console.log(t.allValues());
但我收到一条错误消息,指出 t 没有方法 allValues。我正在尝试做的事情可行吗?
类 必须实例化。您永远不会创建 MyClass
的实例。您还错误地导入了它。您正在将 MyClass
导出为 命名导出 ,并且必须将其导入。
在目前的形式下,你必须做
var MyClass = require('./MyClass').MyClass;
var t = new MyClass();
console.log(t.allValues());
或者您可以将其导出为默认导出:
export default MyClass;
在这种情况下你可以做
var t = require('./MyClass');
(至少有 Babel)