Je voudrais créer un tableau des modules que j'importe dans un fichier Main.js. Comment puis-je accéder à l'objet qui contient les modules importés?

MODIFIER Pour expliquer davantage, j'importe plusieurs classes dans un fichier Main.js contenant une classe principale. Chacune de ces classes provient de leur propre fichier individuel, me donnant des instructions d'importation comme celle-ci:

import Header from './features/Header.js';
import ImageStrip from './features/ImageStrip.js';
import AreaChart from './features/AreaChart.js';
import Axes from './features/Axes.js';

Existe-t-il un objet JavaScript contenant les modules importés, par exemple quelque chose comme [ Header, ImageStrip, AreaChart, Axes ]? Ou est-il possible d'en créer un?

1
interwebjill 17 avril 2018 à 22:14

3 réponses

Meilleure réponse

Aucune structure de données n'est automatiquement remplie avec les importations du fichier actuel. Vous devrez construire votre propre tableau ou objet qui répertorie manuellement chaque importation.

import Feature1 from './features/Feature1.js';
import Feature2 from './features/Feature2.js';
import {SubFeatureX} from './features/Feature3.js';

const imports = [Feature1, Feature2, {SubFeatureX}];
// or
const imports = {Feature1, Feature2, Feature3: {SubFeatureX}};

Si vous devez créer cette variable dans chaque fichier et que vous vous inquiétez de l'effort de maintenance manuelle des listes, vous pouvez compiler le projet avec Babel et pourrait écrire un plugin Babel pour ajouter cette variable pour vous en haut de chaque fichier.

2
Rory O'Kane 17 avril 2018 à 22:23
file.js
export firstFunc() {}
export nextFunc() {}
newFile.js
import * as Obj from "./file.js";

Est-ce que ça fait du sens?

0
Rory O'Kane 17 avril 2018 à 22:15
import {firstMethod, secondMethod} from "./firstFile";
import {anotherFirstMethod} from "./secondFile";

export {
    firstMethod,
    secondMethod,
    anotherFirstMethod
};

Ou

import * as Obj from "./firstFile";
import * as Obj2 from "./secondFile";

export {
    Obj,
    Obj2
};
0
Rory O'Kane 19 avril 2018 à 16:08