2016-12-19 12 views
11

Obecnie mam 4 klasy potomne, każda w swoim pliku. Wymagam ich wszystkich w tym samym pliku. Zastanawiam się, czy mogę zawrzeć wszystkie 4 z tych klas w jednym module. Obecnie jestem importowania ich jak tenCzy można wyeksportować wiele klas z jednego modułu Nodejs?

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

Chciałbym importować je tak

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

Albo nawet

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

moich klas są zdefiniowane jak tak

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

module.exports = Jack; 

Odpowiedz

34

Tak, można eksportować wiele klas.

np. People.js

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

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

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

I, można uzyskać dostęp do tych klas, jak słusznie wspomniał.

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

NAPRAWDĘ !? Próbowałem tej metody wcześniej! Pozwól mi spróbować jeszcze raz. Przyjmę twoje ans jak najszybciej. –

+1

Jak się okazało, po prostu miałem literówkę. Dzięki!! –

+1

Serdecznie zapraszamy :) –

27

Można również zrobić to w krótszej formie, przy użyciu destructuring assignments (które są obsługiwane natywnie począwszy od node.js v6.0.0):

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

class John { 
    // ... 
} 

module.exports = { Jack, John } 

Importowanie:

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

Albo nawet tak, jeśli chcesz aliasować wymaga przypisania:

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

W tym ostatnim przypadku personJack i personJohn będą odwoływać się do twoich zajęć.

Słowo ostrzeżenia:

rozpad może być niebezpieczne w sensie, że jest to skłonność do wytwarzania nieoczekiwanych błędów. Jest względnie łatwo zapomnieć nawiasów klamrowych na export lub przypadkowo uwzględnić je na require.

+0

Zasługujesz na więcej punktów. – John

+0

Dziękuję, John. – Nevertheless