2016-12-19 15 views
11

現在、自分のファイルにそれぞれ4つの子クラスがあります。私はそれらをすべて同じファイルに要求しています。 1つのモジュールに4つのクラスすべてを含めることができるかどうかは疑問です。現在、私は私のクラスはそう単一のNodejsモジュールから複数のクラスをエクスポートできますか?

のように定義されています。この

var People = require('./People.js'); 
var JackInstance = new People.Jack(); 

あるいは

var Jack = require('./People.js').Jack; 
var JackInstance = new Jack(); 

のようにそれらをインポートしたいのですが、この

var Jack = require('./Jack.js'); 
var JackInstance = new Jack(); 
var Jones = require('./Jones.js'); 
var JonesInstance = new Jones(); 

のようにそれらをインポートしています

class Jack{ 
    //Memeber variables, functions, etc 
} 

module.exports = Jack; 

答えて

34

はい、エクスポートできます複数のクラス。

People.js

class Jack{ 
    //Memeber variables, functions, etc 
} 

class John{ 
    //Memeber variables, functions, etc 
} 

module.exports = { 
    Jack : Jack, 
    John : John 
} 

そして、あなたは正しく述べてきたように、あなたは、これらのクラスにアクセスすることができます。

var People = require('./People.js'); 
var JackInstance = new People.Jack(); 
var JohnInstance = new People.John(); 
+2

本当に!?早くこの正確な方法を試しました!もう一度試してみましょう。私はあなたのansをできるだけ早く受け入れます。 –

+1

結論として、私はちょうどタイプミスがありました。ありがとう!! –

+1

あなたは大歓迎です:) –

27

あなたはまた、(Node.jsのv6.0.0から始まるネイティブにサポートされています)destructuring assignmentsを使用して、短縮形でこれを行うことができます:

// people.js 
class Jack { 
    // ... 
} 

class John { 
    // ... 
} 

module.exports = { Jack, John } 

インポート:

// index.js 
const { Jack, John } = require('./people.js'); 

たりしますエイリアスを割り当てたい場合は、このように割り当てを行う必要があります。

// index.js 
const { 
    Jack: personJack, John: personJohn, 
} = require('./people.js'); 

後者の場合personJackpersonJohnはクラスを参照します。警告の

単語:

な破壊は、それが予期しないエラーを生成しがちだという意味で危険である可能性があります。中括弧を忘れてexportに入れることや、間違ってrequireに入れることは比較的簡単です。

+0

あなたはより多くのポイントを取得する必要があります。 – John

+0

ありがとう、ジョン。 – Nevertheless

関連する問題