Ecmascript 6 在现有项目中使用babeljs编译文件
我有一个用ES6编写的简单类Ecmascript 6 在现有项目中使用babeljs编译文件,ecmascript-6,babeljs,Ecmascript 6,Babeljs,我有一个用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) { t
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没有方法allvalue。我想做的是可能的吗?必须实例化类。您从未创建过
MyClass
的实例。您还错误地导入了它。您正在将MyClass
导出为命名导出,并且必须将其作为命名导出进行导入
以目前的形式,您必须
var MyClass = require('./MyClass').MyClass;
var t = new MyClass();
console.log(t.allValues());
也可以将其导出为默认导出:
export default MyClass;
在这种情况下,你可以这样做
var t = require('./MyClass');
(至少对巴贝尔来说)“我想做的事情可能吗?”你想做什么?类必须被实例化。您从未创建过
MyClass
的实例。您还错误地导入了它。在它的当前形式中,您必须执行var MyClass=require('./MyClass').MyClass;var t=新的MyClass();log(t.allValues())代码>。如果您将此更改为答案,我会将其标记为已回答。我只是想澄清一下。您是否在ES5
中使用新的ES5
编译代码,有没有Babel
库?我想没有吧?我只是打算编译到ES5,然后按原样使用文件。你是对的,我错过了用他的对象{MyClass}包装导出
我的回答是,我认为OP使用的是Babel
来创建ES5
编译代码,并将其直接注入到他的旧项目中,而无需使用Babel
库。如果他不是,我的错。