Was ist in Angular 2 Opaque Token und was ist der Punkt?
Läuft bei mir in 'opaque tokens' als eine Lösung für die Umsetzung der globalen Konstanten im Winkel 2, zum Beispiel hier: Die Definition globaler Konstanten, die in Winkel-2
Trotz Lesen der docsich kann nicht scheinen, um zu begreifen, das Punkt.
Mit einem OpaqueToken ist vorzuziehen zur Verwendung von Zeichenketten als Token da
von möglichen Kollisionen, verursacht durch mehrere Anbieter mit der gleichen
string als zwei verschiedene Token.
Was? Was ist ein Angular2 token zu beginnen? Alles was ich bekomme, bei google sind die Antworten auf die JSON-Web-Tokens (Ihre Rolle in "auth", etc, etc), welche ich verstehen, aber offensichtlich nicht im Zusammenhang in irgendeiner Weise.
Was ist eine Opake Token? Für was wird es verwendet?
P. S. Mehr docs auf opake Token verwendet, um Konstanten. Sie wusste nicht, helfen mir sehr viel, aber.
InformationsquelleAutor der Frage VSO | 2016-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
update Angular4
In Angular4
OpaqueToken
ist veraltet und wird ersetzt durchInjectionToken
.InjectionToken erlaubt es, einen generischen Typ-parameter.
Siehe auch
original
Ein token ist ein Schlüssel für die Anbieter von Angulars dependency injection.
Anbieter registriert sind, mit einem Schlüssel-Komponenten, Richtlinien und service-Klassen instanziiert DI-get Abhängigkeiten injiziert, die gesucht werden, die von Anbieter Schlüssel.
DI unterstützt-Typen, strings,
OpaqueToken
und-Objekte als Schlüssel.Den Objekt-Schlüssel (
APP_CONFIG_2
) und dieOpaqueToken
(APP_CONFIG
) müssen genau die gleiche Instanz. Ein anderes Beispiel mit dem gleichen Inhalt, wird nicht funktionieren. Dies macht es einfach, zu suchen, wo der Schlüssel deklariert ist und ob die Anbieter und die Injektion Ziel den gleichen Schlüssel verwenden.Für einen string, kann es eine andere Instanz, dies bringt das Risiko, dass die gleiche Zeichenfolge verwendet wird, in verschiedenen Modulen und könnte zu Konflikten führen oder den falschen Anbieter eingespritzt wird.
InformationsquelleAutor der Antwort Günter Zöchbauer
Eine Opake Token ist nur eine runtime-Klasse, die verwendet wird, einen eindeutigen Bezeichner für Injektor-Anbieter.
Können sagen, Sie haben einen Wert, 'secretId", die Sie verwenden möchten, in ein paar Dienste und Komponenten. Sie wollen nicht zu codieren diese in Ihre Dienste und Komponenten, wie es in Zukunft ändern wird. Wie gut Sie schreiben tests für Ihre Dienste und Komponenten.
Mit einer Klasse Sie können die Klasse verwenden, als eine Umsetzung, die Art und Injektor-token. Für einen string-Wert, andere Literale Ausdrücke, Objekte, etc-Sie haben nichts zu verwenden, als ein Injektor token. Könnten Sie einen string als ein Injektor token, aber es gibt keine grunzte, dass der string eindeutig sein. Opake Token, auch wenn zwei Token, die den gleichen Namen haben, werden Sie ausgewertet, wie verschiedene Token.
InformationsquelleAutor der Antwort Martin
Ich bin neu eckig 2, aber ich will versuchen, das zu interpretieren, was ich verstanden von https://blog.thoughtram.io/angular/2016/05/23/opaque-tokens-in-angular-2.html in einen einfachen code. CMIIW.
Diesem Stück code wird ein Problem haben (die späteren überschreiben die alten), weil es Konflikt (
'config' == 'config'
).Es ist vielleicht zu offensichtlich und sinnlos in das Spielzeug-code, sondern in einer echten code, können wir möglicherweise nicht in der Lage sein zu identifizieren, die diesen Konflikt leicht, wenn einem der provider definiert ist, in einer Drittanbieter-Bibliothek.
So, um das zu beheben, wir können OpaqueToken wie im folgenden code.
Zwei Instanzen derselben Klasse sind nie gleich sein kann (
new OpaqueToken('config') != new OpaqueToken('config')
) und somit die Vermeidung von Konflikten. DieOpaqueToken
selbst nichts ist, sondern nur als einfaches Nichtstun. Klasse.InformationsquelleAutor der Antwort elfan