Ist es möglich, Abhängigkeiten wie in anderen Programmiersprachen wie C # oder Java in ES2015-Module einzufügen? Wenn ich ein Modul importiere, erstelle ich eine feste Abhängigkeit davon und kann es später zur Laufzeit nicht mehr ändern. Zum Beispiel habe ich folgenden JavaScript-Code:

import Animal from './dog';

class Person {
  feedAnimal() {
    new Animal().feed();
  }
}

Ich importiere das Hundemodul. Aber was ist, wenn ich es in eine Katze verwandeln möchte? Im Moment muss ich Zeile 1 von Hand ändern, aber in einigen Situationen möchte ich, dass sie von außen so konfiguriert werden kann, dass unter bestimmten Bedingungen eine Katze und unter anderen Bedingungen eine Katze vorhanden sein sollte. All diese Dinge, die mit der klassischen Abhängigkeitsinjektion getan werden können.

Ich weiß, dass es einige DI-Frameworks gibt, wie Scatter, Elektrolyt, Draht und so weiter aber Leider erfordern die meisten von ihnen eine spezielle Syntax und sind nicht für ES2015-Module.

7
LongFlick 14 Aug. 2015 im 13:52

3 Antworten

Beste Antwort

Ich bin zu SystemJS übergegangen. Mit SystemJS können Sie dynamische Importe wie System.import('foo').then(() => console.log('Loaded)); durchführen.

Ein weiterer Vorteil ist, dass System das neue ECMAScript-Standardmodul-Ladesystem sein wird.

0
LongFlick 9 Sept. 2015 im 08:36

Sie können Inject-Loader verwenden, um dies zu erreichen, wenn Sie mit Webpack bündeln.

Hoffentlich hilft das jemandem, der über diesen alten Beitrag stolpert.

2
user8605837 13 Sept. 2017 im 22:55

Sie können Abhängigkeiten nicht dynamisch definieren. Diese Frage und ihre akzeptierte Antwort anzeigen:

Frage: Name des ES6-Variablenimports in node.js?

Antwort: Nicht mit der Importanweisung. Import und Export sind so definiert, dass sie statisch analysierbar sind und daher nicht von Laufzeitinformationen abhängen können.

2
sdgluck 17 Aug. 2015 im 16:58