Ich möchte ein Array der Module erstellen, die ich in die Datei Main.js importiere. Wie kann ich auf das Objekt zugreifen, das die importierten Module enthält?

BEARBEITEN Zur weiteren Erläuterung importiere ich mehrere Klassen in eine Main.js - Datei, die eine Hauptklasse enthält. Jede dieser Klassen stammt aus einer eigenen Datei und gibt mir folgende Importanweisungen:

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

Gibt es ein JavaScript-Objekt, das die importierten Module enthält, zum Beispiel [ Header, ImageStrip, AreaChart, Axes ]? Oder ist es möglich, eine zu erstellen?

1
interwebjill 17 Apr. 2018 im 22:14

3 Antworten

Beste Antwort

Es gibt keine Datenstruktur, die automatisch mit den Importen der aktuellen Datei gefüllt wird. Sie müssen Ihr eigenes Array oder Objekt erstellen, das jeden Import manuell auflistet.

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}};

Wenn Sie diese Variable in jeder Datei erstellen müssen und Bedenken haben, die Listen manuell zu verwalten, können Sie das Projekt mit Babel kompilieren und könnte ein Babel-Plugin schreiben, um diese Variable oben in jeder Datei für Sie hinzuzufügen.

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

Macht das Sinn?

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

export {
    firstMethod,
    secondMethod,
    anotherFirstMethod
};

Oder

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

export {
    Obj,
    Obj2
};
0
Rory O'Kane 19 Apr. 2018 im 16:08