Geschäftsanwendungen auf der Basis von Web-Technologien, allen voran HTML und JavaScript, sind derzeit äußerst beliebt, zumal damit sämtliche klassischen und mobilen Plattformen adressiert werden können. Doch bevor Entwicklungs-Teams ausgeklügelte JavaScript-Frameworks, wie Angular 2, nutzen können, müssen Sie sich im Bereich der Grundlagen fit machen. Dazu gehört neben der Sprache JavaScript auch das Document Object Model zur Interaktion mit dem Browser aber auch das JavaScript-Eco-System mit seinen Build-Tools und Packagemanagern. Dieses Seminar gibt anhand eines durchgängigen Beispiels einen Überblick zu diesen Technologien. Dazu wird nicht nur JavaScript, das in seiner neuesten Version „ECMAScript 6“ auch Klassen und Module unterstützt, sondern auch TypeScript, welches zusätzlich ein statisches Typsystem bringt, betrachtet. Im Rahmen der Übungen haben Sie selbst die Gelegenheit, die gewonnen Erkenntnisse anhand einer eigenen Anwendung zu erproben.
- Dieses Schulungsmodul kann mit allen aktuellen JavaScript-Versionen (z.B. 14.0, 13.0, 12.0, 11.0) entsprechend Ihren Wünschen durchgeführt werden.
- Dieses Schulungsmodul kann mit allen aktuellen TypeScript-Versionen (z.B. 5.1, 5.0, 4.9, 4.8) entsprechend Ihren Wünschen durchgeführt werden.
Optional vorab: HTML und CSS als Basistechniken moderner Web- und Mobilanwendung (werden geschult, sofern noch nicht bekannt)
# Konzepte und Softwarearchitektur moderner Web- und Mobilanwendungen
Moderne Webarchitekturen Single-Page-Web-Applications (SPAs) vs. Multi-Page-Web-Applications (MPAs)
Server-Side-Pre-Rendering
Aufbau von Client und Server
Mobile Apps mit Webtechniken
Cross-Platform-Apps mit Webtechniken
Pattern für die Benutzeroberfläche (MVVM, MVC, MVP)
Kommunikation REST-Kommunikation mit HTTP-Diensten/Web-APIs (XML, JSON)
Benachrichtigungen/Push ("Echtzeitfähigkeit") mit Websockets
User Experience Usability ähnlich wie bei Desktop-Anwendungen
Responsive Web Design (RWD)
Offline-Fähigkeit
Progressive Web Apps (PWA)
Progressive Enhancement
# Die Skriptsprache JavaScript
Grundkonzepte von JavaScriptUnterschiede zu C#/C++/Visual Basic/Java u.a.Variablen und Datentypen in JavaScript sowie Ermittlung von TypenKontrollstrukturen (Schleifen, Bedingungen etc.)Booleans, truthy und falsy und der VergleichsoperatorFunktionen, funktionale Programmierung und ClosuresVerwatung von Objekten und Objektmengen (z.B. Array, ArrayBuffer, Set, Map, WeakMap, WeakSet, WeakRef, Proxy)Objektorientierte Programmierung mit Objektliteralen, Konstruktorfunktionen und PrototypenDas Function-Objekt und thisHilfsfunktionen und eingebaute Objekte (z.B. JSON, Math, asychrone Programmierung: Promise, async, awaitModule-Muster und IIFEsSonderfälle und besondere Konstrukte# TypeScript als Erweiterung zu JavaScript
Transpilation nach JavaScript Konfiguration des TypeScript-Compilers (tsconfig.json)Verbesserte Typisierung / TypeScript-Datentypenvar vs. let vs. constTemplate Stringsfor-of vs. for-inKlassenbasiertes Programmieren: Klassen, Vererbung und InterfacesDuck TypingDestructuringVereinfachtes funktionales Programmieren: Funktionen und Lambdas (Arrow-Functions)Vereinfachte asynchrone Programmierung mit async/awaitGenericsFehlerbehandlungModuleAmbiente DeklarationenDekoratoren (Annotationen)Iteratoren und Generatoren# Best Practices für JavaScript und TypeScript
Zu vermeidende SprachkonstrukteWartbaren Code schreibenCoding Styles# Werkzeuge
Web-Editoren wie Visual Studio, Visual Studio Code (VSCode), Webstorm/IntelliJ und EclipseSinnvolle Erweiterungen des Webeditors (z.B. Plug-Ins für VSCode, Web Essentials für Visual Studio)Aufbau eines Projekts/ProjektstrukturAusführungsumgebungen: node.js und BrowserTranspilation, z.B. von TypeScript zu JavaScriptPräprozessoren, z.B. SASS/SCSS/LESS/Stylus für CSSDebugger z.B. in Visual Studio, VSCode, Webstorm, EclipseDebugger in Browsern z.B. in ChromeDie Paketmanager NPM, bower und nugetBundling, Lazy Loading und Hot Reloading mit Webpack, RequireJS oder SystemJSCodegenerierung mit YeomanQualitätssicherung mit Lintern wie ESLint, JSLint, JSHint, TSLintBuild-Automatisierung mit NPM-Skripten, gulp und gruntBundling mit Webpack, Parcel oder BrowsifyTestautomatisierung, z.B. Jest, Mocha, Qunit, Cypress, Selenium, Nightwatch, WebdriverIO, Protractor, TestCafe, Playwright, Puppeteer, Chai, Expect.js, Code Coverage mit "Istanbul" Continuous Integration / Continuous Delivery, z.B. mit GitHub, GitLab, Azure DevOpsOptional: Framework-spezifische CLI-Werkzeuge wie z.B. Angular CLI, Vue CLI, React CLI oder Cordova CLI
# Programmierschnittstellen des Browsers
Document Object Model (DOM)Programmierschnittstellen moderner Browser (z.B. Local Storage, IndexedDB, Websockets, Service Worker, Animations, Push, Promises)Verfügbarkeit moderner Programmierschnittstellen und PolyfillsJavaScript Object Notation (JSON)REST-/JSON-Webservices aufrufen (Fetch-API, XHR-Objekt)Cross-Origin Resource Sharing (CORS)Sinnvolle JavaScript-BibliothekenÜberblick über JavaScript-Frontend-Frameworks und JavaScript-Backend-FrameworksOptional: Besprechung eines JavaScript-Frontend-Frameworks (z.B. React, Angular, Vue.js, Svelte etc) und/oder eines JavaScript-Backend-Frameworks (z.B. Node.js, Express, Deno, Bun etc.)