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?
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:
Die Annotations-API basiert auf Angular 2.0:
%Vor%Die Bindungs-API basiert auf Ninject:
%Vor%Die Auflösungs-API basiert auf Ninject:
%Vor%Die neueste Version (2.0.0) unterstützt viele Anwendungsfälle:
Sie können mehr darüber in Ссылка
erfahrenIm 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.
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)
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%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%Tags und Links javascript dependency-injection typescript inversion-of-control