2017-04-25 27 views
3

使用Node.js的版本7.7.2,我想確定,並從這樣的模塊導出ES6類:如何導出ES6類並在另一個模塊中構建它的一個實例?

// Foo.js 
class Foo { 
    construct() { 
     this.bar = 'bar'; 
    } 
} 
module.exports = Foo; 

,然後導入類到另一個模塊,構建表示類的一個實例像這樣:

// Bar.js 
require('./foo'); 
var foo = new Foo(); 
var fooBar = foo.bar; 

但是,這種語法不起作用。我正在嘗試做什麼,如果是這樣,那麼實現這個目標的正確語法是什麼?

謝謝。

+0

你知道如何使用模塊預ES6的NodeJS? – Bergi

+0

這裏的一個明顯的問題是,你設置屬性'foo',但尋找屬性'bar' ... – lonesomeday

+0

是的,這是一個錯字。只是修復它。接得好。狀態報告:目前正在執行此項工作,將很快返回並顯示結果。 –

回答

3

你必須使用正規節點模塊語法這一點。

您的示例代碼中有一些錯誤。首先,class不應該跟着()。另外,類構造函數應該是constructor而不是construct。請看下面的foo.js以獲得正確的語法。

foo.js

class Foo { 
    constructor() { 
    this.foo = 'bar'; 
    } 
} 

module.exports = Foo; 

bar.js

const Foo = require('./foo'); 

const foo = new Foo(); 

console.log(foo.foo); // => bar 
+0

你是對的,parens是一個現在已經修復的錯字。你發佈的語法不起作用。foo.foo結束('./ Foo'))打印出類的定義,然後在'undefined'和'type of foo'中找到類型'object'而不是type'Foo'。所以它會被導出/導入,問題是'new Foo()'沒有調用構造函數。 –

+0

你必須做一些不正確的事情,我實際上是用這兩個文件做了一個測試項目。'foo.foo'原因是因爲Foo類有一個屬性foo,根據該類的實例名(在本例中爲'foo'),它會出現在'foo.foo'中,你可以這樣做:'const x = new Foo ()',然後調用'x.foo'這將是'bar'。希望有幫助。 –

+0

我收回上述。這是正確的語法。我只是拼寫錯誤的構造函數。我在一個恥辱的海洋中充滿了漣漪。 –

0
// Foo.js 
export class Foo() { 
    construct() { 
     this.foo = 'bar'; 
    } 
} 

通知關鍵字EXPORT

+0

相應的輸入將如何顯示? – Bergi

+0

我不確定你的意思是「相應的輸入」 – user5328504

+0

糟糕,我的意思是寫入導入。 *導入*,不是輸入。 – Bergi

相關問題