# Erstellen einer Banking-App Teil 1: HTML-Vorlagen und Routen in einer Webanwendung ```mermaid journey title Ihre Entwicklung Ihrer Banking-App section SPA-Grundlagen Verstehen von Single-Page-Apps: 3: Student Lernvorlagenkonzepte: 4: Student Beherrsche DOM-Manipulation: 4: Student section Routing-Systeme Implementieren client-seitiges Routing: 4: Student Browser-Verlauf verwalten: 5: Student Navigationssysteme erstellen: 5: Student section Professionelle Muster Modulare Architektur aufbauen: 5: Student Beste Praktiken anwenden: 5: Student Benutzererfahrungen erstellen: 5: Student ``` Als der Apollo-11-Navigationscomputer 1969 zum Mond steuerte, musste er zwischen verschiedenen Programmen wechseln, ohne das gesamte System neu zu starten. Moderne Webanwendungen funktionieren ähnlich – sie ändern, was du siehst, ohne alles neu zu laden. Dies schafft die flüssige, reaktionsschnelle Erfahrung, die Nutzer heute erwarten. Im Gegensatz zu traditionellen Websites, die ganze Seiten bei jeder Interaktion neu laden, aktualisieren moderne Web-Apps nur die Teile, die sich ändern müssen. Dieser Ansatz, ähnlich wie die Missionskontrolle zwischen verschiedenen Anzeigen wechselt und gleichzeitig die Kommunikation aufrechterhält, schafft die flüssige Benutzererfahrung, die wir erwarten. Das macht den Unterschied so dramatisch: | Traditionelle Multi-Page-Apps | Moderne Single-Page-Apps | |-------------------------------|-------------------------| | **Navigation** | Volles Neuladen der Seite bei jedem Bildschirm | Sofortiger Inhaltwechsel | | **Leistung** | Langsamer durch vollständige HTML-Downloads | Schneller mit teilweisen Aktualisierungen | | **Benutzererfahrung** | Ruckartige Seitenwechsel | Sanfte, app-ähnliche Übergänge | | **Datenaustausch** | Schwieriger zwischen Seiten | Einfache Zustandsverwaltung | | **Entwicklung** | Mehrere HTML-Dateien zur Pflege | Einzelnes HTML mit dynamischen Vorlagen | **Evolution verstehen:** - **Traditionelle Apps** benötigen Serveranfragen bei jeder Navigation - **Moderne SPAs** laden einmal und aktualisieren Inhalte dynamisch mit JavaScript - **Nutzer erwarten** jetzt sofortige, nahtlose Interaktionen - **Leistungsverbesserungen** umfassen geringeren Bandbreitenbedarf und schnellere Reaktionen In dieser Lektion bauen wir eine Banking-App mit mehreren Bildschirmen, die nahtlos zusammenfließen. So wie Wissenschaftler modulare Instrumente verwenden, die für verschiedene Experimente neu konfiguriert werden können, verwenden wir HTML-Vorlagen als wiederverwendbare Komponenten, die bei Bedarf angezeigt werden. Du arbeitest mit HTML-Vorlagen (wiederverwendbare Blaupausen für verschiedene Bildschirme), JavaScript-Routing (das System, das zwischen Bildschirmen wechselt) und der History-API des Browsers (die die Zurück-Schaltfläche wie erwartet funktionieren lässt). Das sind die grundlegenden Techniken, die auch Frameworks wie React, Vue und Angular verwenden. Am Ende hast du eine funktionierende Banking-App, die professionelle Single-Page-Application-Prinzipien demonstriert. ```mermaid mindmap root((Single-Page-Anwendungen)) Architecture Template System Client-seitiges Routing Zustandsverwaltung Ereignisbehandlung Templates Wiederverwendbare Komponenten Dynamische Inhalte DOM-Manipulation Inhaltswechsel Routing URL-Verwaltung History API Navigationslogik Browser-Integration User Experience Schnelle Navigation Sanfte Übergänge Konsistenter Zustand Moderne Interaktionen Performance Reduzierte Serveranfragen Schnellere Seitenübergänge Effiziente Ressourcennutzung Bessere Reaktionsfähigkeit ``` ## Quiz vor der Vorlesung [Quiz vor der Vorlesung](https://ff-quizzes.netlify.app/web/quiz/41) ### Was du brauchst Wir benötigen einen lokalen Webserver, um unsere Banking-App zu testen – keine Sorge, das ist einfacher als es klingt! Falls du noch keinen hast, installiere einfach [Node.js](https://nodejs.org) und führe `npx lite-server` aus deinem Projektordner aus. Dieser praktische Befehl startet einen lokalen Server und öffnet deine App automatisch im Browser. ### Vorbereitung Erstelle auf deinem Computer einen Ordner namens `bank` mit einer Datei namens `index.html` darin. Wir starten mit diesem HTML-[Boilerplate](https://de.wikipedia.org/wiki/Boilerplate_Code): ```html Bank App ``` **Das bietet dir dieses Boilerplate:** - **Stellt** die HTML5-Dokumentstruktur mit korrekter DOCTYPE-Deklaration her - **Konfiguriert** die Zeichencodierung auf UTF-8 für internationale Textunterstützung - **Ermöglicht** responsives Design mit dem Viewport-Meta-Tag für mobile Kompatibilität - **Setzt** einen aussagekräftigen Titel, der im Browser-Tab erscheint - **Erstellt** eine saubere Body-Sektion, in der wir unsere Anwendung aufbauen > 📁 **Projektstruktur-Vorschau** > > **Am Ende dieser Lektion enthält dein Projekt:** > ``` > bank/ > ├── index.html > ├── app.js > └── style.css > ``` > > **Dateiverantwortlichkeiten:** > - **index.html**: Enthält alle Vorlagen und stellt die App-Struktur bereit > - **app.js**: Verwaltet Routing, Navigation und Vorlagenverwaltung > - **Vorlagen**: Definieren die Benutzeroberfläche für Login, Dashboard und weitere Bildschirme --- ## HTML-Vorlagen Vorlagen lösen ein grundlegendes Problem in der Webentwicklung. Als Gutenberg in den 1440er Jahren den Buchdruck mit beweglichen Lettern erfand, erkannte er, dass er anstelle ganzer Seiten wiederverwendbare Letternblöcke erstellen und nach Bedarf anordnen konnte. HTML-Vorlagen funktionieren nach demselben Prinzip – anstelle separater HTML-Dateien für jede Seite definierst du wiederverwendbare Strukturen, die bei Bedarf angezeigt werden. ```mermaid flowchart TD A["📋 Vorlagen-Definition"] --> B["💬 Versteckt im DOM"] B --> C["🔍 JavaScript findet Vorlage"] C --> D["📋 Vorlage-Inhalt klonen"] D --> E["🔗 An sichtbaren DOM anhängen"] E --> F["👁️ Benutzer sieht Inhalt"] G["Login-Vorlage"] --> A H["Dashboard-Vorlage"] --> A I["Zukünftige Vorlagen"] --> A style A fill:#e3f2fd style D fill:#e8f5e8 style F fill:#fff3e0 style B fill:#f3e5f5 ``` Betrachte Vorlagen als Blaupausen für verschiedene Teile deiner App. So wie ein Architekt eine Blaupause erstellt und diese mehrmals nutzt, anstatt identische Räume neu zu zeichnen, erstellen wir Vorlagen einmal und instanziieren sie bei Bedarf. Der Browser hält diese Vorlagen verborgen, bis JavaScript sie aktiviert. Wenn du mehrere Bildschirme für eine Webseite erstellen möchtest, wäre eine Möglichkeit, für jeden Bildschirm eine HTML-Datei anzulegen. Diese Lösung hat jedoch einige Nachteile: - Du musst das gesamte HTML neu laden, wenn du den Bildschirm wechselst, was langsam sein kann. - Es ist schwer, Daten zwischen den verschiedenen Bildschirmen zu teilen. Eine andere Möglichkeit ist, nur eine HTML-Datei zu haben und mehrere [HTML-Vorlagen](https://developer.mozilla.org/docs/Web/HTML/Element/template) mit dem `