Actuellement, j'ai 4 classes enfants chacune dans leur propre fichier. Je les exige tous dans le même fichier. Je me demande si je peux contenir ces 4 classes dans un seul module. Actuellement, je les importe comme ça
var Jack = require('./Jack.js');
var JackInstance = new Jack();
var Jones = require('./Jones.js');
var JonesInstance = new Jones();
Je voudrais les importer comme ça
var People = require('./People.js');
var JackInstance = new People.Jack();
Ou même
var Jack = require('./People.js').Jack;
var JackInstance = new Jack();
Mes classes sont définies comme si
class Jack{
//Memeber variables, functions, etc
}
module.exports = Jack;
Vous pouvez exporter plusieurs classes comme ceci:
par exemple. People.js
class Jack{
//Member variables, functions, etc
}
class John{
//Member variables, functions, etc
}
module.exports = {
Jack : Jack,
John : John
}
Et accédez à ces classes comme vous l'avez mentionné correctement:
var People = require('./People.js');
var JackInstance = new People.Jack();
var JohnInstance = new People.John();
Vous pouvez également le faire sous une forme plus courte, en utilisant assignations de déstructuration (qui sont supportées nativement à partir de Node.js v6.0. ):
// people.js
class Jack {
// ...
}
class John {
// ...
}
module.exports = { Jack, John }
Importation:
// index.js
const { Jack, John } = require('./people.js');
Ou même comme ceci si vous voulez des assignations nécessitant un alias:
// index.js
const {
Jack: personJack, John: personJohn,
} = require('./people.js');
Dans ce dernier cas, personJack
et personJohn
référenceront vos classes.
Un mot d'avertissement:
La restructuration peut être dangereuse dans le sens où elle est susceptible de générer des erreurs inattendues. Il est relativement facile d'oublier les accolades sur export
ou de les inclure accidentellement dans require
.