AngularJS & TypeScript

Roman Roelofsen

Twitter & GitHub: romanroe

Thin Web (klassische) Clients

  • Jede UI Aktion wird vom Server behandelt
  • Server liefert Daten und Darstellung
  • UIs werden i.d.R. mit jQuery & Co. "gepimped"
  • Typisch für:
    • Servlets-basierte Web Frameworks
    • PHP
    • ...

Vorteile

  • Code ist zentralisiert
  • Code ist nicht öffentlich
  • Es werden nur die Daten übertragen, die für eine Ansicht notwendig sind
  • Vereinfacht Sicherheitsanforderungen
  • Vereinfacht Datenbankoperationen

Nachteile

  • Komplett überholtes Bedienkonzept
  • Schlechte UX == unzufriedene Benutzer
  • "Komplexere" UIs sind aufwendig

Rich Web Clients

  • Die gesamte UI Logik läuft im Browser
  • Optional: Geschäftslogik im Client
  • Server liefert nur Daten (REST o.ä.), keine Darstellung
  • Frameworks
    • AngularJS
    • Ember.js
    • Facebook React

Vorteile

  • Moderne User Experience
  • Komplexe Bedienkonzepte werden möglich
  • Server kann zustandlos werden
  • Strenge, erzwungene Trennung der Architektur:
    • Server liefert Daten
    • Client stellt Daten dar

Nachteile

  • Breiteres Wissen beim Programmierer notwendig
  • Geschäftslogik im Client eventuell ungewünscht
  • Erhöhte Angreifbarkeit
  • Erfordert mehr Resourcen im Client (RAM & CPU)

AngularJS

  • Web Framework für Rich Client Apps
  • Entwickelt von Google
  • Riesiges Ökosystem
  • "HTML enhanced for web apps!"
  • Deklaratives Layout + JavaScript Code
  • Was Angular nicht ist:
    • Imperative API zur UI Erstellung (à la Swing)
    • HTML/XML Abstraktion zur UI Generierung (à la Flex)

Demo: 001_angular

Demo: 002_controller

Demo: 003_service

Demo: 004_directive

TypeScript

Demo: 100

Demo: 101

AngularJS und TypeScript kombinieren

TypeScript type definitions

Fazit

Roman Roelofsen

@romanroe