Was könnt ihr erwarten? • Einblick in • Node.js und Gulp als Entwicklungstools • SPAs mit Angular 2 und TypeScript • Electron • Cordova • Startpunkte zu kennen, um erste eigene Schritte mit etwas 'Googlevelopment' zu machen • Eine Pause um ca. 15:00 Uhr Agenda
Single-Plattform vs. Multi-Plattform vs. Cross-Plattform Windows Windows Mobile iOS Android macOS Linux Fire OS Blackberry 10 Browser Konsole TV / Set-Top Box … Kühlschrank? IoT Raspberry Pi / Arduino
• Backend / Middleware • Bereitstellen der Zugriffspunkte für die Mobile Anwendung(en) • Validierung der Eingaben, Platz für die Business-Logik • JavaScript bzw. TypeScript als Programmiersprachen • Angular 2 als Client-Anwendungs-Framework • HTML / CSS Framework (z.B. Bootstrap und Themes wie Admin LTE) • Electron und Cordova als 'Verpackung' der App für die unterschiedlichen Zielplattformen Bausteine einer Cross-Plattform Anwendung
• Node.js: JavaScript-Laufzeitumgebung • Führt JavaScript aus • Basiert auf Googles V8 JavaScript Engine (die aus Chrome) • Hat APIs um mit dem Betriebssystem zu interagieren • Dateisystem, Network Sockets, andere OS APIs etc. • Ist Event-driven • Basiert auf dem Paradigma, das Aufrufe nie blockieren und asynchron ausgeführt werden Node.js, npm und Gulp
• Node Modul • JavaScript 'Bibliothek' • Kann optional nativen, plattformspezifischen Code enthalten • z.B. zum Aufruf von Betriebssystem-APIs • npm: Node Package Manager • Verwaltet und installiert Node-Module (sog. Packages) • Gulp • Installierbares Node-Modul • Stream-Basierter Task-Runner • Schiebt Dateien von A mit optionalen Transformationen nach B • Kann auf Änderungen reagieren und Events auslösen Node.js, npm und Gulp
• Eine Anwendung als 'Rahmen' • Komponentenbasierte Strukturierung der Anwendung • Komponenten sind leicht zu testen • Nur die Teile der Anwendung werden ausgetauscht, die sich auch ändern • Schnelle Navigation (kein Reload) • Sofortige Reaktion auf Eingabe des Nutzers (Change detection) Warum SPA?
• Component – Komponente bzw. 'Control' • Template – HTML-Vorlage zu einem Control, mit Platzhaltern und… • Binding Expressions – Binden Events oder Properties des Controls in das Template ein • Routing – Konfigurierbar; Steuert über die URL, welche Komponente wo angezeigt wird • Service – Klasse, die Dienste bereitstellt, z.b: Zugriff auf eine API, Berechnungen etc. • Directive – kann das Verhalten und die Darstellung von Komponenten beeinflussen • Pipe – Kann die Darstellung von Binding Expressions beeinflussen • Module – Fasst Components, Services, Directives und Pipes zu Einheiten zusammen Wichtige Stichworte bei Angular 2
• Aus Web-Anwendungen echte Desktop-Anwendungen erzeugen • Ziele sind Windows Desktop, macOS und Linux • Kombination aus Chromium und Node.js • Unabhängig von installierten Browsern auf der Zielplattform • Benötigt keine nativen SDKs um das Projekt zu bauen • Zugriff auf native Plattform-Features • Electron API • Node Module • Auto-Update und Plattform-Deployment • z.B. in MSI auf Windows Desktop-Anwendungen mit Electron
Electron Architektur Electron Renderer Prozess (Chromium Webbrowser-Prozess)) Electron Haupt-Prozess (Node.js) Desktop OS macOS Windows Linux Web-Anwendung Eigene Node.js Module IPC Remote Node.js Electron API
• Apache Cordova • Tools und Framework um native Rahmenanwendungen um Web-Apps herum zu erstellen (sog. Hybride Anwendungen) • Aus "Web Apps" erstellt man "App Apps" • Verwendet native WebView um die Anwendung lokal zu hosten • Bietet Framework und APIs an, um mittels Plugins mit den nativen Plattformen zu kommunizieren • Kommandozeilen-Tools um Projekt-Erzeugung und Build zu automatisieren • Wir benötigen immer das native SDK (iOS, Android, Windows) Mobile Anwendungen mit Cordova Nativer Wrapper Deployment JS HTML CSS
Cordova Architektur Cordova Anwendung Mobile OS iOS Android Win 10 UWP Web-Anwendung Cordova Plugins u.v.m. HTML JS CSS Assets config.xml HTML Rendering Engine (WebView) HTML APIs Cordova APIs OS APIs Cordova Native APIs OS APIs Custom Plugins Geolocation Notifications Contacts Media Camera