Читать книгу Angular - Ferdinand Malcher - Страница 18
Inhaltsverzeichnis
ОглавлениеAktualisierungen in der dritten Auflage
1.2Die Startdatei für das Bootstrapping
2Haben Sie alles, was Sie benötigen?
2.3Paketverwaltung mit Node.js und NPM
2.4Codebeispiele in diesem Buch
3Angular CLI: der Codegenerator für unser Projekt
3.1Das offizielle Tool für Angular
4.1Was ist TypeScript und wie setzen wir es ein?
4.2Variablen: const, let und var
4.7Arrow-Funktionen/Lambda-Ausdrücke
4.8Spread-Operator und Rest-Syntax
4.10Destrukturierende Zuweisungen
IIIBookMonkey 4: Schritt für Schritt zur App
5Projekt- und Prozessvorstellung
5.2Projekt mit Angular CLI initialisieren
5.3Style-Framework Semantic UI einbinden
6Komponenten & Template-Syntax: Iteration I
6.1Komponenten: die Grundbausteine der Anwendung
6.1.2Komponenten in der Anwendung verwenden
6.2Property Bindings: mit Komponenten kommunizieren
6.2.1Komponenten verschachteln
6.2.2Eingehender Datenfluss mit Property Bindings
6.2.3Andere Arten von Property Bindings
6.2.4DOM-Propertys in Komponenten auslesen
6.3Event Bindings: auf Ereignisse in Komponenten reagieren
8Services & Routing: Iteration II
8.1Dependency Injection: Code in Services auslagern
8.1.3Abhängigkeiten registrieren
8.1.5Eigene Tokens definieren mit InjectionToken
8.1.6Abhängigkeiten anfordern mit @Inject()
8.1.7Multiprovider: mehrere Abhängigkeiten im selben Token
8.1.8Zirkuläre Abhängigkeiten auflösen mit forwardRef
8.1.9Provider in Komponenten registrieren
8.1.10Den BookMonkey erweitern
8.2Routing: durch die Anwendung navigieren
8.2.7Verschachtelung von Routen
8.2.11Route programmatisch wechseln
8.2.12Den BookMonkey erweitern
9Powertipp: Chrome Developer Tools
10HTTP & reaktive Programmierung: Iteration III
10.1HTTP-Kommunikation: ein Server-Backend anbinden
10.1.2Requests mit dem HttpClient durchführen
10.1.3Optionen für den HttpClient
10.1.4Den BookMonkey erweitern
10.2Reaktive Programmierung mit RxJS
10.2.1Alles ist ein Datenstrom
10.2.2Observables sind Funktionen
10.2.6Operatoren: Datenströme modellieren
10.2.7Heiße Observables, Multicasting und Subjects
10.2.8Subscriptions verwalten & Memory Leaks vermeiden
10.2.9Flattening-Strategien für Higher-Order Observables
10.2.10Den BookMonkey erweitern: Daten vom Server typisieren und umwandeln
10.2.11Den BookMonkey erweitern: Fehlerbehandlung
10.2.12Den BookMonkey erweitern: Typeahead-Suche
10.3Interceptoren: HTTP-Requests abfangen und transformieren
10.3.1Warum HTTP-Interceptoren nutzen?
10.3.2Funktionsweise der Interceptoren
10.3.5OAuth 2 und OpenID Connect
10.3.6Den BookMonkey erweitern
11Powertipp: Komponenten untersuchen mit Augury
12Formularverarbeitung & Validierung: Iteration IV
12.1Angulars Ansätze für Formulare
12.2.2Datenmodell in der Komponente
12.2.3Template mit Two-Way Binding und ngModel
12.2.4Formularzustand verarbeiten
12.2.8Den BookMonkey erweitern
12.3.1Warum ein zweiter Ansatz für Formulare?
12.3.3Formularmodell in der Komponente
12.3.4Template mit dem Modell verknüpfen
12.3.5Formularzustand verarbeiten
12.3.6Eingebaute Validatoren nutzen
12.3.12Den BookMonkey erweitern
12.4Eigene Validatoren entwickeln
12.4.1Validatoren für einzelne Formularfelder
12.4.2Validatoren für Formulargruppen und -Arrays
12.4.4Den BookMonkey erweitern
12.5Welcher Ansatz ist der richtige?
13Pipes & Direktiven: Iteration V
13.1Pipes: Daten im Template formatieren
13.1.2Die Sprache fest einstellen
13.1.3Eingebaute Pipes für den sofortigen Einsatz
13.1.5Pipes in Komponenten nutzen
13.1.6Den BookMonkey erweitern: Datum formatieren mit der DatePipe
13.1.7Den BookMonkey erweitern: Observable mit der AsyncPipe auflösen
13.1.8Den BookMonkey erweitern: eigene Pipe für die ISBN implementieren
13.2Direktiven: das Vokabular von HTML erweitern
13.2.2Eigene Direktiven entwickeln
13.2.5Den BookMonkey erweitern: Attributdirektive für vergrößerte Darstellung
13.2.6Den BookMonkey erweitern: Strukturdirektive für zeitverzögerte Sterne
14Module & fortgeschrittenes Routing: Iteration VI
14.1Die Anwendung modularisieren: das Modulkonzept von Angular
14.1.2Grundaufbau eines Moduls
14.1.3Bestandteile eines Moduls deklarieren
14.1.4Anwendung in Feature-Module aufteilen
14.1.5Aus Modulen exportieren: Shared Module
14.1.6Den BookMonkey erweitern
14.2Lazy Loading: Angular-Module asynchron laden
14.2.1Warum Module asynchron laden?
14.2.3Module asynchron vorladen: Preloading
14.2.4Den BookMonkey erweitern
14.3.4Den BookMonkey erweitern
14.4Routing: Wie geht’s weiter?
14.4.1Resolver: asynchrone Daten beim Routing vorladen
14.4.2Mehrere Router-Outlets verwenden
14.4.3Erweiterte Konfigurationen für den Router
15Internationalisierung: Iteration VII
15.1i18n: mehrere Sprachen und Kulturen anbieten
15.1.1Was bedeutet Internationalisierung?
15.1.2Eingebaute Pipes mehrsprachig verwenden
15.1.3Texte übersetzen: Vorgehen in fünf Schritten
15.1.4@angular/localize hinzufügen
15.1.5Nachrichten im HTML mit dem i18n-Attribut markieren
15.1.6Nachrichten im TypeScript-Code mit $localize markieren
15.1.7Nachrichten extrahieren und übersetzen
15.1.9Die App mit Übersetzungen bauen
15.1.10Übersetzte Apps mit unterschiedlichen Konfigurationen bauen
15.1.11Ausblick: Übersetzungen dynamisch zur Startzeit bereitstellen
15.1.12Den BookMonkey erweitern
17Qualität fördern mit Softwaretests
17.1.1Testabdeckung: Was sollte man testen?
17.1.2Testart: Wie sollte man testen?
17.1.4»Arrange, Act, Assert« mit Jasmine
17.1.6E2E-Test-Runner Protractor
17.2Unit- und Integrationstests mit Karma
17.2.1TestBed: die Testbibliothek von Angular
17.2.2Isolierte Unit-Tests: Services testen
17.2.3Isolierte Unit-Tests: Pipes testen
17.2.4Isolierte Unit-Tests: Komponenten testen
17.2.5Shallow Unit-Tests: einzelne Komponenten testen
17.2.6Integrationstests: mehrere Komponenten testen
17.2.7Abhängigkeiten durch Stubs ersetzen
17.2.8Abhängigkeiten durch Mocks ersetzen
17.2.9Leere Komponenten als Stubs oder Mocks einsetzen
17.2.11Komponenten mit Routen testen
17.2.12Asynchronen Code testen
17.3Oberflächentests mit Protractor
17.3.2Elemente selektieren: Locators
17.3.4Asynchron mit Warteschlange
17.3.5Redundanz durch Page Objects vermeiden
17.3.6Eine Angular-Anwendung testen
IVDas Projekt ausliefern: Deployment
18Build und Deployment mit der Angular CLI
18.3.1Abhängigkeit zur Umgebung vermeiden
18.3.2Konfigurationen und Umgebungen am Beispiel: BookMonkey
18.5.1Ahead-of-Time-Kompilierung (AOT)
18.5.2Just-in-Time-Kompilierung (JIT)
18.6Bundles analysieren mit source-map-explorer
18.7Webserver konfigurieren und die Anwendung ausliefern
18.7.1ng deploy: Deployment mit der Angular CLI
18.7.2Ausblick: Deployment mit einem Build-Service
19Angular-Anwendungen mit Docker bereitstellen
19.4Eine Angular-App über Docker bereitstellen
19.5Build Once, Run Anywhere: Konfiguration über Docker verwalten
19.7Grenzen der vorgestellten Lösung
20Server-Side Rendering mit Angular Universal
20.1Single-Page-Anwendungen, Suchmaschinen und Start-Performance
20.2Dynamisches Server-Side Rendering
20.4Hinter den Kulissen von Angular Universal
20.5Browser oder Server? Die Plattform bestimmen
20.7Wann setze ich serverseitiges Rendering ein?
20.8Ausblick: Pre-Rendering mit Scully
21State Management mit Redux und NgRx
21.1Ein Modell für zentrales State Management
21.2Das Architekturmodell Redux
21.3NgRx: Reactive Extensions for Angular
21.3.6Struktur des Feature-States definieren
21.3.7Actions: Kommunikation mit dem Store
21.3.8Dispatch: Actions in den Store senden
21.3.9Reducer: den State aktualisieren
21.3.10Selektoren: Daten aus dem State lesen
21.3.11Effects: Seiteneffekte ausführen
21.4Redux und NgRx: Wie geht’s weiter?
21.4.4Hilfsmittel für Komponenten: @ngrx/component
21.5Ausblick: Lokaler State mit RxAngular
VIAngular-Anwendungen für Mobilgeräte
23Der Begriff App und die verschiedenen Arten von Apps
23.2Apps nach ihrer Umsetzungsart
24.1Die Charakteristiken einer PWA
24.3Eine bestehende Angular-Anwendung in eine PWA verwandeln
25NativeScript: mobile Anwendungen entwickeln
25.5Plattformspezifischer Code
25.10NativeScript installieren
25.11Ein Shared Project erstellen mit der Angular CLI
25.12Den BookMonkey mit NativeScript umsetzen
25.12.1Das Projekt mit den NativeScript Schematics erweitern
25.12.3Das angepasste Bootstrapping für NativeScript
25.12.4Das Root-Modul anpassen
25.12.6Die Templates der Komponenten für NativeScript anlegen
26Powertipp: Android-Emulator Genymotion
27Fortgeschrittene Konzepte der Angular CLI
27.1Workspace und Monorepo: Heimat für Apps und Bibliotheken
27.1.1Applikationen: Angular-Apps im Workspace
27.1.2Bibliotheken: Code zwischen Anwendungen teilen
27.2Schematics: Codegenerierung mit der Angular CLI
28.1Web Components mit Angular Elements
28.2Container und Presentational Components
28.3Else-Block für die Direktive ngIf
28.4TrackBy-Funktion für die Direktive ngFor
28.5Angular-Anwendungen dokumentieren und analysieren
28.6Angular Material und weitere UI-Komponentensammlungen