IOC für TypeScript

7

Mit TypeScript haben wir jetzt statische Analyse und viele OOP-Funktionen in JavaScript. Es ist also auch an der Zeit, bessere Komponententests in der clientseitigen Logik zu haben, und außerdem benötigen wir einen IOC-Container für die Abhängigkeitsinjektionen, um den Code testbarer zu machen ...

Also, hat jemand dieses Thema schon erlebt oder kennt man vielleicht Bibliotheken für Typoskript- oder JavaScript-Frameworks, die auf TypeScript portiert werden können?

    
Denis Agarev 09.10.2012, 08:15
quelle

5 Antworten

13

Ich habe einen IoC-Container namens InversifyJS mit erweiterten Funktionen zur Abhängigkeitsinjektion wie kontextbezogene Bindungen entwickelt.

Sie müssen 3 grundlegende Schritte befolgen, um es zu verwenden:

1. Fügen Sie Anmerkungen hinzu

Die Annotations-API basiert auf Angular 2.0:

%Vor%

2. Deklariere Bindings

Die Bindungs-API basiert auf Ninject:

%Vor%

3. Abhängigkeiten auflösen

Die Auflösungs-API basiert auf Ninject:

%Vor%

Die neueste Version (2.0.0) unterstützt viele Anwendungsfälle:

  • Kernel-Module
  • Kernel-Middleware
  • Verwenden Sie Klassen, Zeichenfolgenliterale oder Symbole als Abhängigkeitsbezeichner
  • Injektion von konstanten Werten
  • Injektion von Klassenkonstruktoren
  • Injektion von Fabriken
  • Autofabrik
  • Injektion von Providern (asynchrone Fabrik)
  • Aktivierungshandler (werden verwendet, um Proxies zu injizieren)
  • Mehrfacheinspritzungen
  • Markierte Bindungen
  • Benutzerdefinierte Tag-Decorators
  • Benannte Bindungen
  • Kontextbindungen
  • Freundliche Ausnahmen (z. B. zirkuläre Abhängigkeiten)

Sie können mehr darüber in Ссылка

erfahren     
Remo H. Jansen 07.05.2015 22:33
quelle
3

Im Moment können Sie die Abhängigkeitsinjektion in JavaScript ohne den IOC-Teil verwenden. Es liegt an Ihnen, ob Sie einen "manuellen" Resolver oder Fabriken schreiben oder welches DI-Muster Sie bevorzugen.

Wenn der ECMAScript 6-Standard übernommen wird, kann dies das Konzept von IOC in JavaScript ermöglichen.

    
Fenton 09.10.2012 10:28
quelle
3

Ich habe DI-Bibliothek für Typoskript erstellt - huject

Ссылка

Beispiel:

%Vor%

Es gibt zwar ein Problem mit TypeScript-Schnittstellen, aber ich habe zwei Problemumgehungen (verwende abstrakte oder einfache Klasse als Schnittstelle)

    
Alexey Svetliakov 31.08.2015 00:13
quelle
2

Wir haben einen einfachen Dependency-Injection-Container verwendet, der die AMD define / require-ähnliche Syntax verwendet. Die ursprüngliche Implementierung ist in TypeScript, obwohl der Blog-Post unten es in einfachem altem JavaScript darstellt.

Ссылка

Es ist ziemlich einfach, Abhängigkeitsbeziehungen zu definieren, ohne eine Menge an Konfiguration zu erfordern, und unterstützt die zirkuläre Abhängigkeitsauflösung ähnlich wie requirejs.

Hier ist ein einfaches Beispiel:

%Vor%     
Monroe Thomas 12.11.2012 06:41
quelle
1

Alternativ können Sie einfach kein Framework verwenden und die Klasse als Container mit Objektfabriken als Eigenschaften verwenden. Sie können diese Klasse dann in Tests erben und Fabriken ändern. Dieser Ansatz ist typsicher und erfordert keine Dekoratoren, nur die Registrierung von Klassen.

%Vor%     
jka 15.10.2015 08:35
quelle