59
Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Embed Size (px)

Citation preview

Page 1: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Der Werkzeugkasten für Entwickler

Ein UI-Framework in AngularJS

Timo Korinth

Page 2: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Timo Korinth

Lead Developer HTML5bei MAXIMAGO

Zuvor .NET / WPF Entwicklung

Page 3: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum überhaupt HTML5 und AngularJS?

Was bedeutet Control-Entwicklung und was sind die Vorteile eines UI-Frameworks?

Wie könnte so eine UI-Entwicklung aussehen?

Ist das alles nur Theorie?

Page 4: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum HTML5?

Page 5: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum überhaupt HTML5? HTML läuft auf jedem

Betriebssystem

Page 6: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum überhaupt HTML5? HTML läuft auf jedem Betriebssystem Rollout sehr leicht

Page 7: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum überhaupt HTML5? HTML läuft auf jedem Betriebssystem Rollout sehr leicht HTML läuft auf allen Geräten

Page 8: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum überhaupt HTML5? HTML läuft auf jedem Betriebssystem Rollout sehr leicht HTML läuft auf allen Geräten

HTMLIst hip

Page 9: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS?

Page 10: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS? Data Binding

Kein UI mehr im Code oder per jQuery zusammenbauen

<div> <label>Name:</label> <input type="text" ng-model="yourName" placeholder="Enter a name here"> <hr> <h1>Hello {{yourName}}!</h1></div>

Page 11: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS? Data Binding MV* (Model-View-Whatever)

Saubere Trennung von UI und Logik

JS UI

Page 12: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS? Data Binding MV* Directives

Einfache Erstellung und Kapselung von eigenen Controls

Page 13: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS? Data Binding MV* Directives Application framework

Vollwertige Architektur inkl. Services, Dependency Injection, Routing, View Composition …

Page 14: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS? Data Binding MV* Directives Application framework Support / Community

Sehr gute Dokumentation, Unterstützung, Verbreitung

Quelle: Google Trends

Page 15: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Warum AngularJS? Data Binding MV* Directives Application framework Support / Community

Sehr gute Dokumentation, Unterstützung, Verbreitung

Quelle: campus.codeschool.com

Page 16: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

So oder so … Was bedeutet Control-Entwicklung und Was sind die Vorteile eines UI-

Frameworks?

Page 17: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

UI-Framework

Page 18: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Dazu erst mal ein paar typische Probleme:

Page 19: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Dazu erst mal ein paar typische Probleme: Design vs. Entwicklung

Umgesetztes UI stimmt nicht mit den Design-Vorgaben überein

vs.

Page 20: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Dazu erst mal ein paar typische Probleme: Design vs. Entwicklung Inkonsistenzen im UI

Abstände, Größen, Farben etc. unterscheiden sich von View zu View

vs.

Page 21: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Dazu erst mal ein paar typische Probleme: Design vs. Entwicklung Inkonsistenzen im UI Entwicklung ist langsam

Das Rad muss jedes Mal neu erfunden werden und die Entwickler können sich nicht alleine auf die Business Logik konzentrieren

Page 22: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Dazu erst mal ein paar typische Probleme: Design vs. Entwicklung Inkonsistenzen im UI Entwicklung ist langsam Themebarkeit meist schwierig

Entwicklung und Austausch eines neuen Look & Feel meist sehr aufwendig

Page 23: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Wie können solche Probleme vermieden werden?

Page 24: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Wie können solche Probleme vermieden werden? Controls kapseln Design und

VerhaltenInkl. Farben, Abstände, Größen, Zustände

Normal Mouse Over

Page 25: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Wie können solche Probleme vermieden werden? Controls kapseln Design und Verhalten Controls kapseln Layout

Layout Container als Fundament einer View

Application Container Master-Detail Container

Page 26: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Wie können solche Probleme vermieden werden? Controls kapseln Design und Verhalten Controls kapseln Layout Controls als Bausteine der

AnwendungViews werden durch Controls „konfiguriert“

Page 27: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Wie können solche Probleme vermieden werden? Controls kapseln Design und Verhalten Controls kapseln Layout Controls als Bausteine der Anwendung Control-Design einfach

austauschbarTrennung von Control-Aufbau und Design-Parametern

Page 28: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Kategorien

Page 29: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Kategorisierung Primitives

z.B. Image, Label, Progress Bar

LABEL

Page 30: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Kategorisierung Primitives Input

z.B. Textbox, Combobox, Slider

Page 31: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Kategorisierung Primitives Input Interactive

z.B. Button, Toggle Button, Thumb

Page 32: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Kategorisierung Primitives Input Interactive Items

z.B. Listbox, Tab Control, Data Grid

Page 33: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Kategorisierung Primitives Input Interactive Items Layout

z.B. Scroll Viewer, Group Box, Master-Detail

Page 34: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Controls in HTML5

Page 35: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Application framework Data Binding MV* Directives (Custom Controls)

Page 36: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Dynamische Stylesheet Sprache Erweitert CSS um Variablen,

Funktionen, Operationen Kompiliert CSS

Page 37: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Variables

@NiceBlue: #5B83AD;

color: @NiceBlue;

Page 38: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Mixins.bordered {

border-top: dotted 1px black; border-bottom: solid 2px black;

}

#menu a { color: #111; .bordered;

}

Page 39: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Funktionen Operationen Namespaces …

Page 40: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Aufbau

Page 41: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Logik JS

Page 42: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Logik Definition von Eigenschaften Definition von Zuständen Definition von Events Logik zur Steuerung

Page 43: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

AngularJS Control Logik Control Definition

Definition von Eigenschaften

app.directive('extButton', function () { ... }

scope: { content: '@', // string property clicked: '&', // function propertyisDisabled: '=' // object property

}

Page 44: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Logik

Template HTML

Page 45: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Control Template Definition der Bausteine eines Controls Definition der visuellen Zustände

NormalMouse OverPressedSelected

Rahmenelemente

Page 46: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

HTML Control Template<button class="extButton{{stylecontext}} master"

data-ng-class="{'disabled': isDisabled}" type="button" data-ng-disabled="isDisabled" data-ng-click="clicked()" data-tabindex="0">

<span class="slave"> <span>{{content}}</span> <span data-ng-transclude></span>

</span> </button>

Page 47: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Angular Parser

<button class="extButton master disabled" data-ng-class="{'disabled': isDisabled}" type="button" data-ng-disabled="isDisabled" data-ng-click="clicked()" data-tabindex="0">

<span class="slave"> <span>Das ist ein Inhalt</span> <span data-ng-transclude></span>

</span> </button>

<ext-button clicked="clicked()" />

Page 48: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Logik

Template

Style Less / CSS

Page 49: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Style Setzen von Eigenschaften Beeinflusst das Control Template

Normal Background ColorMouse Over Background ColorPressed Background ColorSelected Background Color

Page 50: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Less / CSS Style&.master {

margin: 4px; font-size: 12pt; .borderRadius(0); border-color: black; border-width: 1px; border-style: solid;

Page 51: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Trennung von Control-Aufbau und Design-Parametern

Page 52: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Logik

Template

LessDesign Parameter

Page 53: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Design Parameter Definition von Farben, Größen,

Abständen … Beeinflusst das Control Template Einheitliche Namensgebung Austauschbar für Bereiche in der

Anwendung

Page 54: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Less Design Parameter@NormalInputBackground: WhiteSmoke; @NormalInputForeground: #666666;

@MouseOverInputBackground: #E2E2E2; @MouseOverInputForeground: #666666;

&.master { margin: @MainInteractionMargin; font-size: @MainInteractionFontSize; .borderRadius(@InteractionOuterCornerRadius); border-color: @OuterEngraveInteractionBorder; border-width: @InteractionOuterBorderThickness; border-style: @InteractionOuterBorderStyle;

Page 55: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Logik

Template

Style

Design Parameter Design ParameterDesign Parameter

Page 56: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Das selbe Control mit verschiedenen Design Parametern für andere Bereiche

Page 57: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

DEMO

Page 58: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

FRAGEN?

Page 59: Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth

Goldpartner: Veranstalter:

Vielen Dank!Timo Korinth

Ich freue mich auf Ihr Feedback!