Angular: Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux
Gespeichert in:
Hauptverfasser: | , , , |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Heidelberg
dpunkt.verlag
2017
|
Ausgabe: | 1. Auflage |
Schriftenreihe: | iX Edition
|
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Beschreibung: | xxi, 551 Seiten Illustrationen |
ISBN: | 9783864903571 3864903572 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV043522630 | ||
003 | DE-604 | ||
005 | 20191119 | ||
007 | t | ||
008 | 160421s2017 gw a||| |||| 00||| ger d | ||
015 | |a 16,N06 |2 dnb | ||
015 | |a 17,A27 |2 dnb | ||
016 | 7 | |a 1082143529 |2 DE-101 | |
020 | |a 9783864903571 |c Broschur : 32.90 (DE), circa EUR 35.90 (AT) |9 978-3-86490-357-1 | ||
020 | |a 3864903572 |9 3-86490-357-2 | ||
024 | 3 | |a 9783864903571 | |
035 | |a (OCoLC)989967966 | ||
035 | |a (DE-599)DNB1082143529 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-BW | ||
049 | |a DE-706 |a DE-473 |a DE-1102 |a DE-384 |a DE-83 |a DE-B768 |a DE-92 |a DE-1046 |a DE-11 |a DE-91G |a DE-861 |a DE-573 |a DE-703 |a DE-1050 |a DE-739 | ||
082 | 0 | |a 005.2762 |2 22/ger | |
082 | 0 | |a 004 |2 23 | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
084 | |a 004 |2 sdnb | ||
084 | |a DAT 677f |2 stub | ||
084 | |a DAT 332f |2 stub | ||
100 | 1 | |a Woiwode, Gregor |e Verfasser |0 (DE-588)1023035111 |4 aut | |
245 | 1 | 0 | |a Angular |b Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux |c Gregor Woiwode, Ferdinand Malcher, Danny Koppenhagen, Johannes Hoppe |
250 | |a 1. Auflage | ||
264 | 1 | |a Heidelberg |b dpunkt.verlag |c 2017 | |
300 | |a xxi, 551 Seiten |b Illustrationen | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a iX Edition | |
650 | 0 | 7 | |a Angular 4 |0 (DE-588)1136139117 |2 gnd |9 rswk-swf |
653 | |a Angular.js | ||
653 | |a AngularJS | ||
653 | |a ECMAScript | ||
653 | |a Google | ||
653 | |a Nodejs | ||
653 | |a Polymer | ||
653 | |a React | ||
653 | |a Single Page | ||
653 | |a Single-Page-Application | ||
653 | |a TypeScript | ||
653 | |a Web Components | ||
653 | |a node.js | ||
689 | 0 | 0 | |a Angular 4 |0 (DE-588)1136139117 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Malcher, Ferdinand |e Verfasser |0 (DE-588)1133086330 |4 aut | |
700 | 1 | |a Koppenhagen, Danny |e Verfasser |0 (DE-588)1133086446 |4 aut | |
700 | 1 | |a Hoppe, Johannes |e Verfasser |0 (DE-588)1133086470 |4 aut | |
710 | 2 | |a Dpunkt.Verlag (Heidelberg) |0 (DE-588)6085529-0 |4 pbl | |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, PDF |z 978-3-96088-205-3 |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, ePub |z 978-3-96088-206-0 |
776 | 0 | 8 | |i Erscheint auch als |n Online-Ausgabe, Mobi |z 978-3-96088-207-7 |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=d7e086a7e29c4a358f6d11642da7a65e&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m HBZ Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028938517&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-028938517 |
Datensatz im Suchindex
_version_ | 1806333521684332544 |
---|---|
adam_text |
Titel: Angular
Autor: Höller, Christoph
Jahr: 2017
Inhalt
Geleitwort des Fachgutachters. 21
Einleitung. 23
1 Angular-Kickstart: Ihre erste Angular-
Webapplikation 25
1.1 Installation der benötigen Software. 25
1.1.1 Node.js und npm. 25
1.1.2 Visual Studio Code - eine kostenlose Entwicklungsumgebung
fürTypeScript und Angular . 26
1.1.3 Alternative: Webstorm - perfekte Angular-Unterstützung . 27
1.2 Hallo Angular. 27
1.2.1 Komponenten konfigurieren . 30
1.2.2 Die Komponenten-Klasse. 32
1.2.3 Das Applikationsmodul:
das Hauptmodul der Anwendung konfigurieren. 33
1.2.4 main.ts: Wahl der Ausführungsplattform und Start des
Applikationsmoduls. 35
1.2.5 index.html und SystemJS: die Anwendung ausführen. 35
1.3 Die Blogging-Anwendung. 40
1.3.1 Start der Applikation. 43
1.3.2 Einige Tipps zur Fehlersuche. 44
1.3.3 Die Formularkomponente:
Daten aus der View in den Controller übertragen. 45
1.3.4 Das Applikationsmodell. 47
1.3.5 Darstellung der Liste in der View. 50
1.3.6 Modularisierung der Anwendung. 53
1.4 Zusammenfassung und Ausblick. 55
2 Das Angular-CLI: professionelle Projekt-
organisation für Angular-Projekte 57
2.1 Das Angular-CLI installieren. 58
2.2 ng new: Ein Grundgerüst für die Applikation erstellen. 58
2.2.1 Konfigurationsoptionen für die Projekt-Generierung. 60
2.2.2 Das generierte Projekt im Detail - Unterschiede zum
Kickstart-Beispiel. 61
2.3 ng init: Ihr Projekt auf die neueste Angular-CLI-Version updaten . 65
2.4 ng serve: die Anwendung starten . 66
2.4.1 Die Proxy-Konfiguration. 67
2.5 npm start: Start über die lokale CLI-Version. 68
2.6 nggenerate: Komponenten generieren. 69
2.6.1 Konfigurationsoptionen bei der Komponentengenerierung. 70
2.6.2 Weitere Generatoren. 71
2.7 nglint: Linting und der Angular-Style-Guide . 72
2.8 Komponenten- und Ende-zu-Ende-Tests ausführen. 74
2.8.1 ngtest-Unit-und Komponententests ausführen. 74
2.8.2 nge2e-Ende-zu-Ende-Tests ausführen. 75
2.9 CSS-Präprozessoren verwenden. 77
2.10 Drittanbieter-Bibliotheken einbinden. 77
2.10.1 Bibliotheken über die index.html einbinden. 78
2.11 ng build: deploybare Builds erstellen. 79
2.12 Build-Targets und Environments: Konfiguration unterschiedlicher
Build- und Ausführungsumgebungen. 79
2.12.1 Eigene Environments hinzufügen. 81
2.13 DerAOT-Modus. 81
2.14 Zusammenfassung und Ausblick. 82
3 Komponenten und Templating:
der Angular-Sprachkern 85
3.1 Etwas Theorie: der Angular-Komponentenbaum. 85
3.2 Selektoren: vom DOM-Element zur Angular-Komponente. 89
3.2.1 Tag-Selektoren. 89
3.2.2 Attribut-Selektoren . 89
3.2.3 Klassen-Selektoren. 91
3.2.4 not()-Selektoren. 91
3.2.5 Verknüpfung von Selektoren . 91
3.3 Die Templating-Syntax: Verbindung zwischen Applikationslogik
und Darstellung. 92
3.3.1 Fallbeispiel: Timepicker-Komponente. 92
3.3.2 Property-Bindings . 93
3.3.3 Sonderfälle: Attribute, Klassen und Styles setzen. 96
3.3.4 Interpolation - Darstellung von Werten im View. 98
3.3.5 Event-Bindings. 99
3.3.6 Two-Way-Data-Bindings mit NgModel. 104
3.3.7 Lokale Template-Variablen. 106
3.3.8 Die *-Templating-Microsyntax -
neue DOM-Elemente dynamisch einfügen. 107
3.3.9 Templating-Syntax-Spickzettel. 111
3.4 Komponentenschnittstellen definieren:
von der einzelnen Komponente zur vollständigen Applikation. 112
3.4.1 Input-Bindings-Werte in Ihre Komponenten hineinreichen. 113
3.4.2 Output-Bindings - andere Komponenten über Datenänderungen
informieren. 117
3.4.3 Two-Way-Data-Bindings-syntaktischer Zucker für Ihre
Komponentenschnittstelle. 120
3.4.4 Auf Änderungen von Bindings reagieren. 121
3.4.5 Lokale Komponentenvariablen-Zugriff auf die API
Ihrer Kind-Elemente im HTML-Code. 123
3.5 ViewChildren: Zugriff auf Kind-Elemente aus der Komponentenklasse . 123
3.6 Content-Insertion: dynamische Komponentenhierarchien erstellen. 126
3.6.1 Einfachen HTML-Code injizieren. 126
3.6.2 ContentChildren: Erzeugung von dynamischen Komponenten-
bäumen am Beispiel einer Tabs-Komponente. 132
3.7 Der Lebenszyklus einer Komponente. 136
3.7.1 Der Konstruktor: Instanziierung der Komponente. 139
3.7.2 ngOnlnit - Initialisierung der eigenen Komponente. 140
3.7.3 ngOnChanges-auf Änderungen reagieren. 141
3.7.4 ngAfterContentlnit - auf die Initialisierung
von Content-Children reagieren. 142
3.7.5 ngAfterViewInit-auf die Initialisierung
von ViewChildren reagieren. 142
3.7.6 ngOnDestroy-Aufräumarbeiten vornehmen. 143
3.7.7 ngAfterContentChecked, ngAfterViewChecked -
den ChangeDetection-Mechanismus verfolgen . 144
3.7.8 ngDoCheck-den ChangeDetection-Mechanismus verändern. 145
3.8 Zusammenfassung und Ausblick. 147
4 Direktiven:
Komponenten ohne eigenes Template 149
4.1 ElementRef und Renderer: Manipulation von DOM-Eigenschaften
eines Elements. 150
4.1.1 Die Renderer-Klasse: das native Element
plattformunabhängig manipulieren. 153
4.2 HostBinding und HostListener: Auslesen und Verändern von
Host-Eigenschaften und -Events. 154
4.2.1 Kanonisches Host-Binding. 156
4.3 Anwendungsfall: Einbinden von Drittanbieter-Bibliotheken. 157
4.3.1 Two-Way-Data-Bindingfürdie Slider-Komponente. 159
4.4 Anwendungsfall: Accordion-Direktive -
mehrere Kind-Komponenten steuern. 161
4.5 exportAs: Zugriff auf die Schnittstelle einer Direktive. 164
4.6 Zusammenfassung und Ausblick. 166
5 Fortgeschrittene Komponentenkonzepte 169
5.1 Styling von Angular-Komponenten. 169
5.1.1 Styles an der Komponente definieren . 170
5.1.2 ViewEncapsulation - Strategien zum Kapseln Ihrer Styles. 171
5.2 TemplateRef und NgTemplateOutlet: dynamisches Austauschen
von Komponenten-Templates. 178
5.2.1 NgFor mit angepassten Templates verwenden . 179
5.2.2 NgTemplateOutlet: zusätzliche Templates
an die Komponente übergeben . 182
5.3 ViewContainerRef und ComponentFactory:
Komponenten zur Laufzeit hinzufügen. 186
5.3.1 ViewContainerRef und entryComponents:
Komponenten zur Laufzeit hinzufügen . 187
5.3.2 ComponentRef: Interaktion mit der dynamisch erzeugten
Komponente. 190
5.3.3 Komponenten an einer bestimmten Stelle einfügen. 191
5.3.4 Komponenten innerhalb des ViewContainers verschieben
und löschen. 191
5.3.5 createEmbeddedView: Templates dynamisch einbinden. 193
5.4 ChangeDetection-Strategien: Performance-Boost für Ihre Applikation . 196
5.4.1 Die Beispielapplikation . 197
5.4.2 Veränderungen des Applikationsstatus. 200
5.4.3 ChangeDetection-Strategien: Optimierung des Standard-
verhaltens . 203
5.4.4 ChangeDetectorRef: die vollständige Kontrolle über den
ChangeDetector. 206
5.5 Zusammenfassung und Ausblick. 210
6 Standarddirektiven und Pipes:
wissen, was das Framework an Bord hat 213
6.1 Standarddirektiven. 214
6.1.1 Nglf: Elemente abhängig von Bedingungen darstellen. 214
6.1.2 NgSwitch: Switch-Case-Verhalten implementieren. 215
6.1.3 NgClass: CSS-Klassen dynamisch hinzufügen und entfernen. 216
6.1.4 NgStyle: das style-Attribut manipulieren. 220
6.1.5 NgFor: Komfortabel über Listen iterieren. 221
6.1.6 NgNonBindable-Auswertung durch die Templating-Syntax
verhindern . 225
6.2 Pipes: Werte vor dem Rendern transformieren . 226
6.2.1 UpperCasePipe und LowerCasePipe: Strings transformieren. 227
6.2.2 Die SlicePipe-. nur bestimmte Bereiche von Arrays
und Strings darstellen . 227
6.2.3 Die JSON-Pipe: JavaScript-Objekte als String ausgeben. 230
6.2.4 DecimalPipe: Zahlenwerte formatieren. 231
6.2.5 Kurzexkurs: Lokalisierbare Pipes-Werte der aktuellen Sprache
entsprechend formatieren. 231
6.2.6 DatePipe: Datums-und Zeitwerte darstellen. 233
6.2.7 Percent- und CurrencyPipe: Prozent- und Währungswerte
formatieren. 235
6.2.8 Die AsyncPipe. auf asynchrone Werte warten. 237
6.2.9 Pipes im Komponentencode verwenden. 239
6.2.10 Eigene Pipes implementieren. 241
6.2.11 Pure vs. Impure Pipes: Pipe, ändere dich! . 244
6.3 Zusammenfassung und Ausblick. 247
7 Services und Dependency-Injection:
lose Kopplung für Ihre Business-Logik 249
7.1 Grundlagen der Dependency-Injection. 250
7.2 Services in Angular-Applikationen. 252
7.3 Das Angular-Dependency-Injection-Framework. 253
7.3.1 Injector- und Provider-Konfiguration: das Herz der DI . 254
7.3.2 Weitere Provider-Formen. 257
7.3.3 Opaque-Tokens: kollisionsfreie Definition von Dl-Schlüsseln. 259
7.4 Verwendung des Dl-Frameworks in Angular-Applikationen. 261
7.4.1 Der Injector-Baum . 261
7.4.2 Registrierung von globalen Services: der UserService. 262
7.4.3 Registrieren von komponentenbezogenen Services:
MusicSearchService und VideoSearchService . 265
7.5 Injection by Type: Vereinfachungen für TypeScript-Nutzer. 269
7.5.1 Den lnject-Decorator vermeiden. 269
7.5.2 Der lnjectable-Decorator-. TypeScript-optimierte Injections
für Services. 270
7.5.3 Member-Injection - automatische Erzeugung
von Membervariablen. 271
7.6 Sichtbarkeit und Lookup von Dependencys. 272
7.6.1 Sichtbarkeit von Providern beschränken . 272
7.6.2 Den Lookup von Abhängigkeiten beeinflussen. 275
7.7 Zusammenfassung und Ausblick. 279
8 Template-Driven Forms:
einfache Formulare auf Basis von HTML 28i
8.1 Grundlagen zu Formularen: template-driven oder reaktiv?. 283
8.2 Das erste Formular: Übersicht über die Forms-API. 283
8.2.1 Einbinden des Formular-Moduls . 284
8.2.2 Implementierung des ersten Formular-Prototyps. 284
8.2.3 NgModel, NgForm, FormControl und FormGroup:
die wichtigsten Bestandteile der Forms-API. 288
8.3 NgModel im Detail: Two-Way-Data-Binding oder nicht? . 289
8.3.1 One-Way-Binding mit NgModel . 290
8.4 Kurzexkurs: Verwendung von Interfaces für die Definition
des Applikationsmodells . 294
8.5 Weitere Eingabeelemente. 296
8.5.1 Auswahllisten. 296
8.5.2 Checkboxen. 301
8.5.3 Radio-Buttons . 301
8.6 Verschachtelte Eigenschaften definieren. 303
8.6.1 Verschachtelte Eigenschaften mit NgModelGroup . 303
8.7 Validierungen . 304
8.7.1 Vom Framework mitgelieferte Validierungsregeln. 305
8.7.2 Validierungen im Formular darstellen. 305
8.7.3 Implementierung einer generischen ShowError-Komponente . 308
8.7.4 Eigene Validierungsregeln definieren. 312
8.7.5 Asynchrone Validierungen . 315
8.7.6 Feld übergreifende Validierungen. 319
8.8 Implementierung der Tags-Liste:
wiederholbare Strukturen mit Template-Driven Forms. 321
8.9 Zusammenfassung und Ausblick. 324
9 Model-Driven Forms: Formulare dynamisch
in der Applikationslogik definieren 327
9.1 Aktivierung von Model-Driven Forms für Ihre Applikation. 328
9.2 DasTask-Formular im modellgetriebenen Ansatz. 328
9.2.1 Definition des Formulars im TypeScript-Code. 329
9.2.2 Verknüpfung des Formulars mit dem HTML-Code. 330
9.2.3 FormArray im Detail: Wiederholbare Strukturen definieren. 333
9.2.4 Verbindung des Formulars mit dem Applikationsmodell. 337
9.2.5 Der FormBuilder- komfortable Definition von Formularen. 341
9.2.6 Validierungen von Model-Driven Forms. 342
9.3 Formulare und Kontrollelemente auf Änderungen überwachen. 349
9.4 Fallbeispiel: Umfragebogen -
Formulare komplett dynamisch definieren. 350
9.5 Die Forms-API im Überblick. 357
9.5.1 AbstractControl: die Basis für alle Forms-API-Basisklassen . 357
9.5.2 FormControl: Eigenschaften und Methoden für einzelne
Kontrollelemente. 359
9.5.3 FormGroup: API zur Verwaltung von Gruppen und Formularen. 359
9.5.4 FormArray: wiederholbare Strukturen managen. 360
9.6 Zusammenfassung und Ausblick. 360
10 Routing: Navigation innerhalb der Anwendung 353
10.1 Project-Manager: die Beispielanwendung. 364
10.2 Die erste Routenkonfiguration: das Routing-Framework einrichten . 365
10.3 Location-Strategien: »schöne URLs« vs.
»Routing ohne Server-Konfiguration«. 370
10.3.1 PathLocation-Strategie-schöne URLs. 370
10.3.2 HashLocation-Strategie-Routing ohne aufwendige
Konfiguration . 372
10.4 ChildRoutes: verschachtelte Routenkonfigurationen erstellen. 373
10.4.1 Componentless-Routes: Routendefinitionen
ohne eigene Komponente. 376
10.4.2 Relative Links. 377
10.5 RouterLinkActive: Styling des aktiven Links. 379
10.5.1 RouterLinkActiveOptions: Exakt oder nicht?. 379
10.6 Routing-Parameter: dynamische Adresszeilenparameter auswerten. 381
10.6.1 Pfad-Parameter: Pflicht-Parameter in Routen definieren. 382
10.6.2 Snapshots- statisch auf Parameterwerte zugreifen . 384
10.6.3 Matrix-Parameter: optionale Parameter. 385
10.6.4 Query-Parameter: optionale Parameter unabhängig vom
Segment definieren. 389
10.6.5 Fragmentbezeichner. 390
10.7 Aus der Anwendungslogik heraus navigieren. 392
10.7.1 Die navigate-Methode: Navigation auf Basis der Routing-DSL. 392
10.7.2 navigateByUrl: Navigation auf Basis von URLs. 393
10.8 Routing-Guards: Routen absichern und die Navigation generisch
beeinflussen. 394
10.8.1 CanActivate- Routen absichern. 395
10.8.2 CanDeactivate - das Verlassen einer Route verhindern. 398
10.9 Redirects und Wildcard-URLs. 400
10.9.1 Absolute Redirects. 400
10.9.2 Relative Redirects. 401
10.9.3 Wildcard-URLs-Platzhalter-Routen definieren. 402
10.10 Data: statische Metadaten an Routen hinterlegen. 402
10.11 Resolve: dynamische Daten über den Router injizieren. 403
10.11.1 Verwendung einer resolve-Funktion anstelle einer
Resolver-Klasse. 405
10.12 DerTitle-Service: den Seitentitel verändern . 406
10.13 Router-Tree und Router-Events:
generisch auf Seitenwechsel reagieren. 408
10.13.1 Derevents-Stream: bei Seitenwechseln informiert werden. 408
10.13.2 Der Router-Tree: den aktuellen Router-Baum durchlaufen . 409
10.14 Location: direkte Interaktion mit der Adresszeile des Browers. 411
10.15 Mehrere RouterOutlets: maximale Flexibilität beim Routing. 413
10.15.1 Zusätzliche Outlets-ein Chat-Fenster einblenden. 413
10.15.2 Komplexere Outlet-Konfigurationen: eine Task-Schnellansicht. 416
10.16 Zusammenfassung und Ausblick. 419
11 HTTP: Anbindung von Angular-Applikationen
an einen Webserver 421
11.1 Die Server-Applikation . 422
11.1.1 Diejson-server-Bibliothek. 423
11.2 Das Angular-HTTP-Modul verwenden. 426
11.3 Der erste GET-Request: Grundlagen zur HTTP-API. 427
11.3.1 Auf Fehler reagieren. 430
11.4 Asynchrone Service-Schnittstellen modellieren:
Anpassung des TaskService. 431
11.4.1 Observables statt Callbacks- Daten reaktiv verwalten. 432
11.5 Die AsyncPipe: noch eleganter mit asynchronen Daten arbeiten. 434
11.6 URLSearchParams: elegant dynamische Suchen definieren . 435
11.7 POST, PUT, DELETE, PATCH und HEAD:
Verwendung der weiteren HTTP-Methoden. 438
11.7.1 HTTP-POST: neue Tasks anlegen. 438
11.7.2 HTTP-PUT: bestehende Tasks editieren. 439
11.7.3 HTTP-DELETE: Tasks löschen. 441
11.7.4 Generische Anfragen: die »request«-Methode. 442
11.7.5 HTTP-PATCH: Tasks partiell verändern. 445
11.7.6 HTTP-HEAD: der kleine Bruder von GET. 446
11.8 JSONP . 447
11.8.1 Der Angular-Jsonp-Service. 448
11.9 Die Http-API im Detail: Überblick über die wichtigsten Klassen
des Frameworks. 451
11.9.1 Der Http-Service. 451
11.9.2 Das RequestOptionsArgs-Interface . 452
11.9.3 Die Headers-Klasse. 453
11.9.4 Die Response-Klasse . 454
11.10 Zusammenfassung und Ausblick. 454
12 Reaktive Architekturen mit RxJS_457
12.1 Kurzeinführung in RxJS. 458
12.1.1 Observable.create und Observer-Functions -
die Kernelemente der reaktiven Programmierung. 458
12.1.2 Subscriptions und Disposing-Functions -
Observables sauber beenden. 460
12.1.3 Subjects: Multicast-Funktionalität auf Basis von RxJS. 463
12.2 Implementierung einer Typeahead-Suche . 465
12.2.1 mergeMap: verschachtelte Observables verbinden . 469
12.2.2 switchMap - nur die aktuellsten Ergebnisse verarbeiten. 470
12.2.3 merge - mehrere Streams vereinen. 471
12.3 Reaktive Datenarchitekturen in Angular-Applikationen. 474
12.3.1 Shared Services - der erste Schritt in die richtige Richtung. 476
12.3.2 Die neue Datenarchitektur: »Push« statt »Pull«. 479
12.3.3 Umsetzung des neuen Konzepts in Angular. 481
12.3.4 Anbindung der TaskListComponent an den Store. 488
12.3.5 Der »In Bearbeitung«-Zähler. 489
12.4 Anbindung von WebSockets zur Implementierung
einer Echtzeitanwendung. 491
12.4.1 Der WebSocket-Server. 491
12.4.2 Integration von Socket.lO in die Anwendung. 493
12.4.3 Verwendung von Socket.lO im TaskService. 494
12.5 ChangeDetectionStrategy.OnPush: Performance-Schub
durch die reaktive Architektur. 496
12.6 Zusammenfassung und Ausblick. 497
13 Komponenten- und Unit-Tests:
das Angular-Testing-Framework 501
13.1 Karma und Jasmine: Grundlagen zu Unit- und Komponententests
in Angular-Anwendungen. 502
13.1.1 Karma einrichten . 502
13.2 Der erste Unit-Test: einfache Klassen und Funktionen testen. 506
13.2.1 Die Testausführung starten . 508
13.2.2 Nur bestimmte Tests ausführen. 510
13.3 Isolierte Komponenten testen: Grundlagen zu Komponententests
mit dem Angular-Testing-Framework. 511
13.3.1 Die zu testende Komponente. 512
13.3.2 TestBed, ComponentFixture Co - Konfiguration des Testmoduls
und Erzeugung von Testkomponenten . 513
13.4 Mocks und Spies: Komponenten mit Abhängigkeiten testen. 516
13.4.1 Eigene Mocks für die Simulation von Services bereitstellen. 518
13.4.2 inject-Zugriff auf die im Testkontext vorhandenen Services . 520
13.4.3 TestBed.get: alternativer Zugriff auf die Services aus dem
Ausführungskontext. 521
13.4.4 Spies: ausgehende Aufrufe überwachen und auswerten. 522
13.5 Services und HTTP-Backends testen. 524
13.6 Formulare testen. 529
13.6.1 Model-Driven Forms: Formulare direkt über die API testen. 530
13.6.2 Template-Driven Forms: generierte Formulare
über die Forms-API testen. 531
13.6.3 Formulare über die Oberfläche testen. 534
13.7 Direktiven und ngContent-Komponenten testen. 536
13.7.1 overrideComponent und compileComponents:
Komponenten-Templates für den Test überschreiben. 537
13.8 async und fakeAsync: mehr Kontrolle über asynchrone Tests. 539
13.8.1 async: automatisch auf asynchrone Aufrufe warten. 539
13.8.2 fakeAsync komplexere asynchrone Szenarien steuern . 540
13.9 Routing-Funktionalität testen. 541
13.9.1 Manipulation von Router-Diensten im Komponententest . 542
13.9.2 Ausführung echter Navigationsvorgänge. 543
13.10 Zusammenfassung und Ausblick. 545
14 Integrationstests mit Protractor 547
14.1 Start der Tests und Konfiguration von Protractor. 548
14.1.1 Installation und Konfiguration von Protractor. 549
14.2 Anpassung der Applikationskonfiguration über Environments. 550
14.3 Das browser-Objekt und Locators:
Übersicht über die Kernbestandteile von Protractor. 552
14.3.1 browser-die Schnittstelle zur Interaktion mit dem Webbrowser. 553
14.3.2 element und by-Protractor-Locators in Aktion. 554
14.3.3 Promises bei der Arbeit mit der Protractor-API. 557
14.4 Page-Objects: Trennung von Testlogik und technischen Details. 558
14.5 Formulare und Alert-Boxen testen: der Edit-Task-Test. 561
14.6 Seitenübergreifende Workflows testen. 564
14.6.1 ExpectedConditions: komfortabel auf das Eintreten von
Bedingungen warten. 566
14.6.2 Zahlenwerte vergleichen - manuelle Auswertung
der Promise.then-Rückgabewerte. 567
14.7 Debugging von Protractor-Tests. 568
14.8 Screenshots anfertigen. 570
14.8.1 Nach jedem Test einen Screenshot aufnehmen . 571
14.9 Zusammenfassung . 573
15 NgModule und Lazy-Loading:
Modularisierung Ihrer Anwendungen 575
15.1 Feature-Modules: Teilbereiche der Applikation kapseln. 576
15.1.1 Feature-Modules-den Aufgabenbereich modularisieren. 577
15.1.2 Das Common-Module: Import von Angular-Standard-
funktionalität. 579
15.1.3 Routing in Feature-Modules -
die Routing-Konfiguration modularisieren. 579
15.1.4 Anpassungen am Hauptmodul und Integration
des Feature-Modules. 580
15.2 Shared-Modules: gemeinsam genutzte Funktionalität kapseln. 584
15.2.1 Boilerplate-Code durch Shared-Modules vermeiden. 587
15.2.2 Gemeinsame Services über Shared-Modules verwalten. 589
15.3 Lazy-Loading von Applikationsbestandteilen. 591
15.3.1 Preloading von Feature-Modulen: das Beste aus beiden Welten. 593
15.4 entryComponents: dynamisch geladene Komponenten registrieren. 594
15.5 Zusammenfassung und Ausblick. 595
16 Der Angular-Template-Compiler,
Ahead-of-time Compilation und Tree-Shaking 597
16.1 Grundlagen zum Angular-Template-Compiler. 598
16.2 Der Ahead-of-time Compilation-Modus:
Leistungsschub für Ihre Anwendung. 600
16.2.1 Den Template-Compiler ausführen. 601
16.2.2 Start der Anwendung über die statische Browser-Plattform . 602
16.3 Tree-Shaking der Anwendung mit Rollup. 602
16.4 Implementierungsregeln beim Einsatz von AOT. 605
16.4.1 Konsistenz zwischen HTML- und Komponentencode. 605
16.4.2 Kein Einsatz von privaten Membervariablen
im Zusammenspiel mit Templates. 606
16.4.3 Verzicht auf Inline-Funktionen. 607
16.5 Zusammenfassung und Ausblick. 608
17 ECMAScript 5: Angular-Anwendungen
auf klassische Weise entwickeln 6ii
17.1 Hello ES5. 612
17.2 Kalender und Timepicker in ES5. 616
17.2.1 Immediately-Invoked Function Expressions zur Simulation
von Modulen. 616
17.2.2 Template- und Style-URLs. 618
17.2.3 Methoden, Bindings Co. 618
17.2.4 Querys: Kind-Komponenten injizieren . 620
17.2.5 Start der Anwendung. 621
17.2.6 Services- und HTTP-Anbindung. 622
17.3 Zusammenfassung. 626
18 Internationalisierung: mehrsprachige
Angular-Anwendungen implementieren 627
18.1 Die Grundlagen des i18n-Frameworks. 628
18.1.1 Bestimmen Sie die Sprache der Anwendung . 629
18.2 ng-xi18n: automatische Generierung der Message-Datei. 632
18.2.1 Exkurs: die Übersetzungen mit git verwalten. 635
18.3 Description und Meaning: Metadaten für Übersetzer übergeben. 636
18.4 Weitere Übersetzungstechniken. 637
18.4.1 Attribute (und Input-Bindings) übersetzen . 637
18.4.2 Mehrere parallele Knoten übersetzen. 638
18.5 Pluralisierung und geschlechterspezifische Texte. 639
18.5.1 Pluralisierung: Texte abhängig vom Zahlenwert einer Variablen . 639
18.5.2 Pluralisierungen übersetzen . 642
18.5.3 l18nSelectPipe: geschlechterspezifische Texte festlegen. 643
18.6 Statisch übersetzte Applikationen im AOT-Modus generieren . 646
18.7 Zusammenfassung und Ausblick. 649
19 Das Animations-Framework:
Angular-Anwendungen animieren 65i
19.1 Die erste Animation: Grundlagen zum Animation-Framework. 652
19.1.1 Bidirektionale Transitionen. 655
19.2 void und *: spezielle States zum Hinzufügen und Entfernen
von DOM-Elementen. 656
19.2.1 :enter und :leave - Shortcuts für das Eintreten
und Verlassen des DOM. 658
19.3 Animationen in Verbindung mit automatisch berechneten
Eigenschaften . 659
19.4 Animation-Lifecycles: auf den Start und das Ende
von Animationen reagieren. 661
19.5 Animation von Routing-Vorgängen. 662
19.5.1 Gemeinsam genutzte Animationen auslagern . 664
19.5.2 Lifecycle-Hooksfür Routing-Animationen . 664
19.6 Keyframes: Definition von komplexen, mehrstufigen Animationen . 665
19.7 Styling von Komponenten, die in Animationen verwendet werden. 667
19.8 Groups und Sequences: mehrere Animationen kombinieren . 668
19.8.1 group: Animationsschritte parallel ausführen . 669
19.8.2 sequence: Animationsschritte nacheinander ausführen. 670
19.8.3 Kombination von sequence und group. 670
19.9 Zusammenfassung . 671
19.10 Schlusswort. 672
Anhang
A ECMAScript 2015 . 675
B Typsicheres JavaScript mit TypeScript. 727
Index. 775 |
any_adam_object | 1 |
author | Woiwode, Gregor Malcher, Ferdinand Koppenhagen, Danny Hoppe, Johannes |
author_GND | (DE-588)1023035111 (DE-588)1133086330 (DE-588)1133086446 (DE-588)1133086470 |
author_facet | Woiwode, Gregor Malcher, Ferdinand Koppenhagen, Danny Hoppe, Johannes |
author_role | aut aut aut aut |
author_sort | Woiwode, Gregor |
author_variant | g w gw f m fm d k dk j h jh |
building | Verbundindex |
bvnumber | BV043522630 |
classification_rvk | ST 250 |
classification_tum | DAT 677f DAT 332f |
ctrlnum | (OCoLC)989967966 (DE-599)DNB1082143529 |
dewey-full | 005.2762 004 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security 004 - Computer science |
dewey-raw | 005.2762 004 |
dewey-search | 005.2762 004 |
dewey-sort | 15.2762 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 1. Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV043522630</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20191119</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">160421s2017 gw a||| |||| 00||| ger d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">16,N06</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">17,A27</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1082143529</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783864903571</subfield><subfield code="c">Broschur : 32.90 (DE), circa EUR 35.90 (AT)</subfield><subfield code="9">978-3-86490-357-1</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3864903572</subfield><subfield code="9">3-86490-357-2</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783864903571</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)989967966</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1082143529</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-BW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-706</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-1102</subfield><subfield code="a">DE-384</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-92</subfield><subfield code="a">DE-1046</subfield><subfield code="a">DE-11</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-861</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-1050</subfield><subfield code="a">DE-739</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.2762</subfield><subfield code="2">22/ger</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">004</subfield><subfield code="2">23</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 677f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 332f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Woiwode, Gregor</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1023035111</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Angular</subfield><subfield code="b">Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux</subfield><subfield code="c">Gregor Woiwode, Ferdinand Malcher, Danny Koppenhagen, Johannes Hoppe</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1. Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Heidelberg</subfield><subfield code="b">dpunkt.verlag</subfield><subfield code="c">2017</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xxi, 551 Seiten</subfield><subfield code="b">Illustrationen</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">iX Edition</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Angular 4</subfield><subfield code="0">(DE-588)1136139117</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Angular.js</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">AngularJS</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">ECMAScript</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Google</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Nodejs</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Polymer</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">React</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Single Page</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Single-Page-Application</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">TypeScript</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Web Components</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">node.js</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Angular 4</subfield><subfield code="0">(DE-588)1136139117</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Malcher, Ferdinand</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1133086330</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Koppenhagen, Danny</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1133086446</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Hoppe, Johannes</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1133086470</subfield><subfield code="4">aut</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Dpunkt.Verlag (Heidelberg)</subfield><subfield code="0">(DE-588)6085529-0</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, PDF</subfield><subfield code="z">978-3-96088-205-3</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, ePub</subfield><subfield code="z">978-3-96088-206-0</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, Mobi</subfield><subfield code="z">978-3-96088-207-7</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=d7e086a7e29c4a358f6d11642da7a65e&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HBZ Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028938517&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-028938517</subfield></datafield></record></collection> |
id | DE-604.BV043522630 |
illustrated | Illustrated |
indexdate | 2024-08-03T02:58:05Z |
institution | BVB |
institution_GND | (DE-588)6085529-0 |
isbn | 9783864903571 3864903572 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-028938517 |
oclc_num | 989967966 |
open_access_boolean | |
owner | DE-706 DE-473 DE-BY-UBG DE-1102 DE-384 DE-83 DE-B768 DE-92 DE-1046 DE-11 DE-91G DE-BY-TUM DE-861 DE-573 DE-703 DE-1050 DE-739 |
owner_facet | DE-706 DE-473 DE-BY-UBG DE-1102 DE-384 DE-83 DE-B768 DE-92 DE-1046 DE-11 DE-91G DE-BY-TUM DE-861 DE-573 DE-703 DE-1050 DE-739 |
physical | xxi, 551 Seiten Illustrationen |
publishDate | 2017 |
publishDateSearch | 2017 |
publishDateSort | 2017 |
publisher | dpunkt.verlag |
record_format | marc |
series2 | iX Edition |
spelling | Woiwode, Gregor Verfasser (DE-588)1023035111 aut Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux Gregor Woiwode, Ferdinand Malcher, Danny Koppenhagen, Johannes Hoppe 1. Auflage Heidelberg dpunkt.verlag 2017 xxi, 551 Seiten Illustrationen txt rdacontent n rdamedia nc rdacarrier iX Edition Angular 4 (DE-588)1136139117 gnd rswk-swf Angular.js AngularJS ECMAScript Nodejs Polymer React Single Page Single-Page-Application TypeScript Web Components node.js Angular 4 (DE-588)1136139117 s DE-604 Malcher, Ferdinand Verfasser (DE-588)1133086330 aut Koppenhagen, Danny Verfasser (DE-588)1133086446 aut Hoppe, Johannes Verfasser (DE-588)1133086470 aut Dpunkt.Verlag (Heidelberg) (DE-588)6085529-0 pbl Erscheint auch als Online-Ausgabe, PDF 978-3-96088-205-3 Erscheint auch als Online-Ausgabe, ePub 978-3-96088-206-0 Erscheint auch als Online-Ausgabe, Mobi 978-3-96088-207-7 X:MVB text/html http://deposit.dnb.de/cgi-bin/dokserv?id=d7e086a7e29c4a358f6d11642da7a65e&prov=M&dok_var=1&dok_ext=htm Inhaltstext HBZ Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028938517&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Woiwode, Gregor Malcher, Ferdinand Koppenhagen, Danny Hoppe, Johannes Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux Angular 4 (DE-588)1136139117 gnd |
subject_GND | (DE-588)1136139117 |
title | Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux |
title_auth | Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux |
title_exact_search | Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux |
title_full | Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux Gregor Woiwode, Ferdinand Malcher, Danny Koppenhagen, Johannes Hoppe |
title_fullStr | Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux Gregor Woiwode, Ferdinand Malcher, Danny Koppenhagen, Johannes Hoppe |
title_full_unstemmed | Angular Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux Gregor Woiwode, Ferdinand Malcher, Danny Koppenhagen, Johannes Hoppe |
title_short | Angular |
title_sort | angular grundlagen fortgeschrittene techniken und best practices mit typescript ab angular 4 inklusive nativescript und redux |
title_sub | Grundlagen, fortgeschrittene Techniken und Best Practices mit TypeScript - ab Angular 4, inklusive NativeScript und Redux |
topic | Angular 4 (DE-588)1136139117 gnd |
topic_facet | Angular 4 |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=d7e086a7e29c4a358f6d11642da7a65e&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028938517&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT woiwodegregor angulargrundlagenfortgeschrittenetechnikenundbestpracticesmittypescriptabangular4inklusivenativescriptundredux AT malcherferdinand angulargrundlagenfortgeschrittenetechnikenundbestpracticesmittypescriptabangular4inklusivenativescriptundredux AT koppenhagendanny angulargrundlagenfortgeschrittenetechnikenundbestpracticesmittypescriptabangular4inklusivenativescriptundredux AT hoppejohannes angulargrundlagenfortgeschrittenetechnikenundbestpracticesmittypescriptabangular4inklusivenativescriptundredux AT dpunktverlagheidelberg angulargrundlagenfortgeschrittenetechnikenundbestpracticesmittypescriptabangular4inklusivenativescriptundredux |