2016-12-19 3 views
11

В настоящее время у меня есть 4 дочерних класса каждый в своем собственном файле. Я требую, чтобы все они были в одном файле. Мне интересно, могу ли я содержать все 4 из этих классов в одном модуле. В настоящее время я импортировать их как этотМожете ли вы экспортировать несколько классов из одного модуля Nodejs?

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; 

ответ

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

ДЕЙСТВИТЕЛЬНО !? Я попробовал этот точный метод раньше! Дай мне попробовать снова. Я соглашусь с вами. –

+1

Как оказалось, у меня просто была опечатка. Благодаря!! –

+1

Добро пожаловать :) –

27

Вы также можете сделать это в краткой форме, используя destructuring assignments (которые поддерживаются изначально, начиная с Node.js v6.0.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.

+0

Вы заслуживаете больше очков. – John

+0

Спасибо, Джон. – Nevertheless

Смежные вопросы