Für stark typisierte statische Sprachen wie Java sind IoC / DI-Frameworks / Toolkits von unschätzbarem Wert, um die komplexen Systeme so zu entkoppeln, dass die Subkomponenteneinheit testbar und ihre Zusammensetzung fließend wird.
Die meisten von uns geben an, dass Javascript als lose typisierte dynamische Sprache bereits die wesentlichen Vorteile von IoC / DI im Geiste bietet, während einige darauf bestehen, dass Abstraktion / Implementierung auf höherer Ebene vorhanden sein sollte.
Was sind die letztgenannten IoC / DI-Implementierungen in Javascript Realm?
Bitte werfen Sie einen Blick in wire.js . Das ist meine Wahl und es funktioniert großartig.
Die wichtigsten Funktionen sind:
- Einfache, deklarative Abhängigkeitsinjektion
- Eine flexible, nicht-invasive Verbindungsinfrastruktur
- Application Lifecycle Management
- Leistungsfähige Kerntools und Plugin-Architektur zur Integration von gängigen Frameworks und vorhandenem Code.
- Unterstützung für Browser- und Serverumgebungen
Überprüfen Sie auch einige Alternativen npm-Module für DI
Javascript's Duck-Typing erlaubt es uns Abhängigkeiten leicht nachzubilden.
Hier ist ein kurzes Beispiel, wie Sie das tun können:
Wir haben eine einfache Funktion, die ein Element darstellt, das der Datenbank hinzugefügt wird. DB ist eine Abhängigkeit, über die wir uns lustig machen wollen.
%Vor%Wenn wir die DB-Abhängigkeit als Parameter ändern, können wir injizieren, was wir wollen. Wenn die Funktion aufgerufen wird, prüft sie, ob der DataStore-Parameter existiert. Wenn das Element vorhanden ist, wird der Wert db zugewiesen. Wenn dataStore null oder nicht definiert ist, wird stattdessen ein neues DB-Objekt erstellt. Dies ermöglicht es Ihnen, Ihre Abhängigkeit mit der Gewissheit zu injizieren, dass db immer einen Wert hat.
%Vor%Jetzt können wir unsere Abhängigkeit so verspotten:
%Vor%Und um alles in einem Test zusammenzufassen:
%Vor%Angular.js bietet eine Dependency-Management-Implementierung, die eine großartige IMO ist. Aber Angular ist viel mehr als nur ein DI-Container. Um davon zu profitieren, muss Ihre App von Grund auf eckig sein. Es ist jedoch einen Versuch wert, besonders wenn Sie starke formbasierte Interaktionen haben.
Tags und Links javascript dependency-injection ioc-container