Grundlagen der Web-Programmierung
- Zielgruppe
- Was du haben solltest
- Umgang mit dem Text
- Schreibweisen
- Symbole
- Tipp
- Information
- Warnung
- Hinweis
- Spielen und Testen
- https://justrun.it
- Über den Autor
- Elektronische Version
WE2018e01
1.Protokolle und Standards
- 1.1Standardisierung mit RFCs
- 1.2Das OSI-Referenzmodell
- 1.3Die Internet-Protokollfamilie
- 1.3.1Address Resolution Protocol (ARP)
- 1.3.2Internet Control Messaging Protocol (ICMP)
- 1.3.3Internet Protocol (IP)
- Keine Fehlerkorrektur
- IPv6 vs IPv4
- 1.3.4Transmission Control Protocol (TCP)
- 1.3.5User Datagram Protocol (UDP)
- 1.3.6Session Initiation Protocol (SIP)
- 1.4Die Hochsprachenprotokolle
- 1.4.1File Transfer Protocol (FTP)
- 1.4.2Network News Transfer Protocol (NNTP)
- 1.4.3Simple Mail Transfer Protocol (SMTP) / Extended SMTP (ESMTP)
- 1.4.4Hypertext Transfer Protocol (HTTP)
- Methode oder Verb?
- 1.4.5HTTP 2.0
- 1.4.6Ergänzende Standards
- 1.5REST
- Webdienst
- 1.5.1Merkmale
- 1.5.2Beispiel
- 1.5.3URI
- 1.5.4HTTP-Methoden für REST
- 1.5.5MIME
- 1.5.6JSON
- 1.5.7Das Format ATOM
- Atom in Webseiten
- 1.5.8Grenzen von REST
- 1.6GraphQL
- 1.6.1Implementierungen
- 1.6.2Abfragen
2.HTML – Hypertext Markup Language
- 2.1Grundlagen HTML
- 2.1.1Geschichte
- 2.2XML – Grundlage für HTML
- 2.2.1Markup
- 2.2.2XML-Dokumente
- 2.2.3Verarbeitung
- 2.2.4Der Begriff “Markup”
- 2.3Seitenaufbau
- DOM
- 2.4Elemente der Seite
- 2.4.1Textelemente
- 2.4.2Fließtextauszeichnung
- 2.4.3Verweise
- 2.4.4Tabellen
- 2.4.5Multimedia und Grafiken
- 2.4.6Formulare
- 2.4.7Skripte
- 2.4.8Interaktive Elemente
- 2.5Allgemeine und universelle Attribute
- 2.5.1id
- 2.5.2class
- Missbrauch von class
- 2.5.3accesskey
- 2.5.4contenteditable
- 2.5.5contextmenu
- Unterstützung
- 2.5.6dir
- 2.5.7draggable
- 2.5.8dropzone
- 2.5.9hidden
- Kein Schutz!
- 2.5.10lang
- 2.5.11spellcheck
- Rechtschreibprüfung
- 2.5.12style
- 2.5.13tabindex
- 2.5.14title
- Browserverhalten
3.Cascading Style Sheets (CSS)
- 3.1Grundlagen
- 3.2Syntax
- 3.3Selektor
- 3.3.1Elemente (Tags)
- 3.3.2ID
- 3.3.3Klassen
- 3.3.4Attribute
- 3.3.5Logische Auswahl
- 3.3.6Weitere Selektoren
- Browserunterstützung
- 3.4Das Box-Modell
- 3.4.1Bausteine der Box
- Zählweise
- Ausnahmen
- 3.4.2Das Box-Modell in CSS3
- 3.5Das Flexbox-Modell
- 3.5.1Prinzipien
- 3.5.2Eigenschaft der Container
- 3.6Beachtung von Medien
- 3.6.1Syntax
- Umgang mit Einheiten
- 3.6.2Parameter
- 3.7Der Viewport
- 3.7.1Viewport einstellen
- 3.7.2Viewport-Einstellungen
- 3.8Einheiten
- 3.8.1Absolute Einheiten
- Typografische Angaben
- Empfehlung
- 3.8.2Relative Einheiten
- Empfehlung
4.JavaScript
- 4.1Einführung
- 4.1.1Sprachmerkmale und Entwurfsmuster
- 4.1.2Vergleich mit Programmiersprachen
- 4.2JavaScript-Syntax
- 4.3Variablen und Scope
- var
- 4.3.1Scope – der Sichtbarkeitsbereich
- 4.3.2Das return-Schlüsselwort
- 4.3.3Kommentare
- 4.3.4Literale
- 4.3.5Umlaute
- 4.3.6Numerische und Boolesche Literale
- 4.3.7Sonstige Literale
- 4.3.8Operatoren
- 4.4Typen
- 4.4.1Automatische Typkonvertierung
- 4.4.2Number
- Integer
- 4.4.3Zeichenketten (String)
- UCS-2
- Veraltete Elemente
- 4.4.4Boolean
- 4.4.5Objekte
- Das Objekt-Literal
{} - 4.4.6Spezielle Typen
- 4.4.7Arrays
- Spezialfunktionen statt Klassen
- 4.5Operatoren
- 4.5.1Operatoren für Objekte
- 4.5.2Vergleichsoperatoren
- 4.6Anweisungen – Statements
- 4.6.1Kontrollstrukturen: if – else
- Blockklammern oder nicht
- 4.6.2Kontrollstrukturen: switch – else – default
- Umgang mit
break - 4.6.3Kontrollstrukturen: Schleifen
- foreach
- 4.6.4Fehlerbehandlung
- 4.7Umgang mit Objekten
- 4.7.1Erstellen von Objekten
- 4.7.2Deklaration mit new
- 4.7.3Deklaration mit der Literalnotation
- 4.7.4Die Konstruktorfunktion
- 4.7.5Methoden und Eigenschaften
- 4.7.6Vertiefung des Prototyping
- 4.7.7Objektvererbung
- 4.7.8Exkurs Objekthierarchie
- 4.7.9Vertiefung zu Bindungen
- 4.7.10Zusammenfassung
- 4.8Module
- 4.8.1Einfache Module
- 4.8.2Privater Funktions-Scope
- IIFE
- Stilvarianten
- 4.8.3Öffentliche Schnittstellen
- 4.8.4Instanzen von Modul-Objekten
- 4.8.5Globale Objekte
- 4.8.6Erweiterbare Module
- Reihenfolgen sichern
- 4.8.7Namensräume
- 4.8.8Zusammenfassung
- 4.9Globale Standardfunktionen
- 4.9.1Timerfunktionen
- 4.9.2Prüffunktionen
- 4.10ES2015 / ECMAScript 6
- 4.10.1Pfeilfunktionen (Lambdas)
- 4.10.2Klassen
- 4.10.3Erweiterte Objektliterale
- 4.10.4Vorlagenzeichenfolgen
- 4.10.5Destrukturierung
- 4.10.6Standardargumente
- 4.10.7Argument-Arrays
- 4.10.8Variablen mit
letundconst - 4.10.9Schleifen mit
for..of - 4.10.10Unicode
- 4.10.11Module
- 4.10.12Stellvertreter: Proxies
- Fehlende Unterstützung
- 4.10.13Symbole
- Fehlende Unterstützung
- 4.10.14Ableiten von internen Typen
- 4.10.15Promise
- 4.10.16Reflektions-API
- 4.11Tipps und Tricks
- 4.11.1Strikt-Mode
use strict - 4.11.2Allgemeine Tipps
- 4.11.3Spezielle Tipps
- 4.12Suchmuster
- 4.12.1Einführung in reguläre Ausdrücke
- Die Testumgebung
- REPL
- Website
- Das Muster
- Zeilenumbrüche
- 4.12.2Metazeichen
- Vorsicht mit Referenzen
- LookAhead und LookBehind
- 4.12.3Die JavaScript-Funktionen
- Die Option g
- Umgang mit Literalen
- 4.12.4Das Glob-Pattern
5.TypeScript
- 5.1Vorbemerkungen
- 5.2Variablen und Konstanten
- 5.2.1Scope – der Sichtbarkeitsbereich
- 5.2.2Konstanten
- 5.3TypeScript-Syntax
- 5.3.1Kommentare
- 5.3.2Literale
- 5.3.3Umlaute
- alert
- 5.3.4Numerische Literale
- 5.3.5Sonstige Literale
- 5.3.6Operatoren
- 5.4Das Typsystem
- 5.4.1Die Basistypen
- Typen und Typdefinitionen
- 5.4.2Symbole
- 5.5Anweisungen – Statements
- 5.5.1Kontrollstrukturen
- 5.5.2Fehlerbehandlung
- 5.6Schnittstellen
- Duck Typing
- 5.6.1Implizite Implementierung
- Das Objekt-Literal
- 5.6.2Explizite Implementierung
- Strukturelles Typsystem
- 5.6.3Optionale Eigenschaften
- 5.6.4Schnittstellen erweitern
- 5.6.5Funktionstypen
- 5.6.6Union-Typen
- 5.6.7Array-Typen
- Dictionary (Wörterbuch)
- 5.6.8Hybride Schnittstellen
- 5.7Klassen
- 5.7.1Vererbung
- 5.7.2Schutz von Mitgliedern
- 5.7.3Eigenschaften
- 5.7.4Implementierung von Schnittstellen
- 5.7.5Statische Klassen
- 5.7.6Statische Eigenschaften
- 5.7.7Konstruktoren
- 5.7.8Schnittstellen aus Klassen
- 5.8Module
- 5.8.1Module erstellen
- 5.8.2Module über Dateigrenzen
- ///-Direktiven
- 5.8.3Externe Module
- 5.8.4Optionales Laden von Modulen
- 5.8.5Standard-Export
- 5.8.6Werte-Export
- 5.8.7Typische Probleme mit Modulen
- 5.9Typings
- 5.9.1Fertige ambiente Bibliotheken
- 5.9.2Der TypeScript Definition Manager
- Typings
- 5.9.3Typ-Deklarationsdateien via npm
6.Dynamische Webseiten
- 6.1Dynamische Webseiten entstehen
- 6.2Vorgehensweise
- 6.2.1Herunterladen
- 6.2.2Installation und Konfiguration
- 6.2.3Initialisieren der Node-Applikation
- ‘npm start’ versus ‘node server.js’
- 6.2.4Die erste Applikation
- 6.2.5Pakete
- DRY
- Versionen
- 6.2.6Eine Serverapplikation erstellen
- Mehr zu Express
- Port
- 6.2.7Dynamisches HTML
- 6.2.8HTML-Dateien senden
- UTF-8
- 6.2.9Beschränkung der HTTP-Methoden
- 6.2.10Umgang mit Formulardaten
- POST und MIME
- Dokumentation
- 6.2.11Verarbeiten des Querystring
- 6.3Die erste Applikation
- Bad Request
- POST und Querystring
- Server- versus Client-Upload
- 6.3.1Zusammenfassung
- 6.4Optimierung
- 6.4.1Werkzeuge
- 6.4.2Serverseitige Optimierung
- 6.4.3Allgemeines und Banales
- ETag
- 6.4.4Clientseitige Optimierung
- 6.5Authentifizierung
- 6.5.1Federation
- 6.5.2OAuth
- 6.5.3Autorisierung
- 6.6Framework-Bausteine
7.Die Entwicklungsumgebung
- DRY
- 7.1Einsatz
- 7.1.1Paketverwaltung mit npm oder yarn
- 7.1.2Build-Automation mit Gulp
- 7.2Testen
- 7.2.1Testen mit Jasmine und Karma
- 7.2.2Eine Beispiel-Applikation mit Tests
- 7.3Optimierung
- 7.3.1Anwendungen mit WebPack verpacken
- 7.3.2Entwicklungsunterstützung
- 7.3.3Loader für CSS
- FOUC
- 7.3.4HTML
- 7.3.5Denken in Modulen
- 7.4ECMSScript 2015 und Neuer
- 7.4.1Babel
- 7.4.2Installation
- 7.4.3Babel nutzen
8.Die Serverumgebung
- 8.1Node
- 8.1.1Globale Module
- Echtzeit
- 8.1.2Globale Objekte
- 8.2HTTP und HTTPS
- 8.2.1Grundlagen
- 8.2.2Felder
- 8.2.3Methoden
- 8.2.4HTTP-Klassen
- Content-Length
- 8.2.5Klasse http.ClientRequest
- 8.2.6HTTPS
- 8.3Dateien und Pfaden
- 8.3.1Zugriff auf das Dateisystem
- Synchron oder Asynchron
- 8.3.2Funktionen für den Dateizugriff
- Plattformabhängigkeit
- Vorsicht bei Testfunktionen
- 8.3.3Funktionen zum Umgang mit Streams
- Streams
- 8.4Express
- 8.4.1Installation
- 8.4.2Applikationsstruktur
- LESS oder SASS
- Windows
- Nur zum Start
- 8.4.3Routing in Node-Applikationen
- RESTful
- API
- 8.4.4Eine Beispielapplikation
- Middleware
- Vereinfachung der Beispiele
- Infrastruktur nutzen!
- Wo ist das HTML?
- 8.5Pug
- Editor einrichten
- 8.5.1Vorbereitung
- Installationsanleitung
- 8.5.2Installationsanleitung
- 8.5.3Applikationsstruktur
9.JQuery
- 9.1Einführung
- 9.1.1Einsatzmöglichkeiten
- 9.2jQuery einbinden
- CDN (Content Delivery Network)
- 9.3jQuery nutzen
- 9.3.1Auswählen von Elementen
- 9.3.2Ändern von Inhalten
- 9.3.3HTML-Klassen hinzufügen und entfernen
- 9.3.4Effekte
- 9.4AJAX mit jQuery
- AJAX
- 9.5Zusammenfassung
10.Angular
- 10.1Einführung
- 10.1.1Einführung in Angular
- 10.1.2Die Programmiersprache
- 10.1.3Ein triviales Beispiel
- 10.2Direktiven und Komponenten
- 10.2.1Direktiven
- 10.2.2Komponenten
- 10.2.3Das *-Symbol in Angular
- 10.2.4Attribut-Direktive
- 10.2.5Benutzen von Komponenten und Direktiven
- 10.2.6Schleifen mit *ngFor
- 10.2.7Pipes
- 10.2.8Dienste
- 10.2.9HTTP in Angular
- 10.2.10Lebendauer der Komponenten
- 10.3Architektur einer Angular-Anwendung
- 10.3.1Bestandteile der Anwendung
- 10.3.2Benennungsregeln
- 10.3.3Komponenten
- Groß- oder Kleinschreibung?
- 10.4Routing – Der Weg zur SPA
- SPA
- 10.4.1Konfiguration
- Routen
- 10.4.2Definition
- 10.4.3Nutzung
- 10.5Rx – Die Reactive Extensions
- 10.5.1Geschichte
- 10.5.2Observables
- Lambda
- 10.6Zusammenfassung
11.React
- 11.1Merkmale
- 11.1.1Tipps
- 11.1.2Das virtuelle DOM
- 11.2Erste Schritte
- 11.2.1Professionelle Einrichtung mit npm
- 11.2.2Testserver einrichten
- 11.3Dienste
- 11.4Komponenten erstellen
- 11.4.1Dynamische Inhalte
- 11.4.2Lebensdauer
- 11.4.3Status
- 11.4.4Ereignisse
- 11.5Listen und Tabellen
- 11.5.1Einfache Listen
- 11.5.2Listen mit Schlüsselwerten
- 11.6Wiederverwendbare Komponenten
- 11.6.1Einfache Komponenten
- 11.6.2Erweiterte Komponenten
- 11.7Formulare
- 11.7.1Standard-Elemente
- 11.7.2Textarea
- 11.7.3Listenelemente
- 11.7.4Komplexe Formulare
- 11.7.5Validierung
- 11.8React und TypeScript
- 11.8.1Einrichten
- 11.8.2Projektstruktur
- 11.8.3Komponenten in TypeScript
- 11.9Routing – Der Weg zur SPA
- SPA
- 11.9.1Konfiguration
- Routen
- 11.10Dienste
- 11.11Bereitstellung
- 11.11.1Vorbereitung
- 11.11.2Konfiguration
- 11.12Zusammenfassung
12.Flux
- 12.1Einführung
- 12.1.1Ein Zustandsbaum
- 12.1.2Der Ereignisfluss
- 12.1.3Der Zustandsfluss
- 12.2Redux mit React
- 12.2.1Actions
- 12.2.2Reducer
- 12.3@ngrx/store mit Angular
- 12.3.1Einführung
- 12.3.2Einsatz
- 12.3.3Reducer
- 12.3.4Server-Dienste nutzen
- 12.3.5Effekte
- 12.3.6Einsatz von NGRX
- 12.3.7Zusammenfassung
13.Das programmierbare Web
- “Performance is a Feature”
- 13.1Cloud-Dienste
- 13.1.1Fragmente einer Applikationsumgebung
- 13.1.2Amazon S3 – Simple Storage Service
- 13.1.3CloudFront
- 13.2Container mit Docker
- 13.2.1Begriffe
- 13.2.2Container Infrastruktur
- 13.2.3Docker nutzen
- 13.3Freie Dienste
- 13.3.1Wie man eine API anprogrammiert
- 13.4Architektur
- 13.4.1Aspekte der Architektur
- 13.4.2Techniken
- 13.4.3Vergleich der Architekturen
- 13.4.4Microservices im Frontend