web-dev-qa-db-ja.com

単一のNodejsモジュールから複数のクラスをエクスポートできますか?

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

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

このようにインポートしたい

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

あるいは

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

私のクラスは次のように定義されています

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

module.exports = Jack;
29
Native Coder

次のように複数のクラスをエクスポートできます。

例えばPeople.js

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

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

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

そして、あなたが正しく述べたようにこれらのクラスにアクセスします:

var People = require('./People.js');
var JackInstance = new People.Jack();
var JohnInstance = new People.John();
69
Mukesh Sharma

destructuring assignments (Node.js v6.0. からネイティブにサポートされています)を使用して、これをより短い形式で行うこともできます。

// 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');

後者の場合、personJackおよびpersonJohnはクラスを参照します。

警告の言葉:

予期しないエラーが発生しやすいという意味で、破壊は危険な場合があります。 exportの中括弧を忘れたり、誤ってrequireに含めることは比較的簡単です。

63
Damaged Organic