Module Codefragmente sind, die bestimmte Funktionalität zu implementieren und geschrieben werden durch spezielle Techniken. Es gibt kein Out-of-the-Box-Modularisierungsschema in der JavaScript-Sprache. Die kommende ECMAScript 6-Spezifikation tendiert dazu, dies zu lösen, indem das Modulkonzept in der JavaScript-Sprache selbst eingeführt wird. Das ist die Zukunft.
Ziel
Lasst uns sagen, dass wir zwei Module haben. Der erste ist ein Dienst, der Ajax-Anfragen macht und der zweite ist ein Router.
var service = function() {
return { name: 'Service' };
}
var router = function() {
return { name: 'Router' };
}
Wir haben eine andere Funktion, die diese Module benötigt.
var doSomething = function(other) {
var s = service();
var r = router();
};
Und die Dinge ein wenig interessanter die Funktion machen einen weiteren Parameter akzeptieren muss. Sicher, wir könnten den obigen Code verwenden, , aber das ist nicht wirklich flexibel. Was, wenn wir ServiceXML oder ServiceJSON verwenden möchten. Oder was ist, wenn wir einige der Module für Testzwecke nachbauen wollen. Wir können nicht nur den Körper der Funktion bearbeiten. Die erste Sache, die wir alle aufkommen, besteht darin, die Abhängigkeiten als Parameter an die Funktion zu übergeben. D.h .:
var doSomething = function(service, router, other) {
var s = service();
var r = router();
};
Auf diese Weise sind wir vorbei, die genaue Umsetzung des Moduls , die wir wollen. Dies bringt jedoch ein neues Problem mit sich. Stellen Sie sich vor, wir haben etwas über unseren Code. Was passiert, wenn wir eine dritte Abhängigkeit benötigen. Wir können nicht alle Aufrufe der Funktion bearbeiten. Also, wir brauchen ein Instrument, das das für uns tun wird. Genau das versuchen die Injektoren zu lösen.Lassen Sie uns einige Ziele aufschreiben, die wir erreichen wollen:
- wir sollten Abhängigkeiten der Lage sein registrieren
- der Injektor eine Funktion übernehmen sollte und eine Funktion zurück, die irgendwie die benötigten Ressourcen erhält
- wir sollten nicht viel schreiben, brauchen wir kurze und nette Syntax
- der Injektor den Umfang der bestandenen Funktion
- die übergebene Funktion sollte in der Lage sein, um benutzerdefinierte Argumente zu akzeptieren, nicht nur die beschriebenen Abhängigkeiten
012 halten soll
Eine nette Liste ist es nicht. Lassen Sie uns tauchen.
Haben Sie sich https://en.wikipedia.org/wiki/Module_(disambiguation)#Computing_and_engineering und https://en.wikipedia.org/wiki/Dependency_injection angesehen? – Bergi