2. www.agentbase.de 2
AngularJS
agentbase AG - Profil
IT-Dienstleister, Paderborn
Focus
Business Process Management
Portale
Social Business
Anwendungsentwicklung
Anwendungsmodernisierung / -webifizierung
Systemintegration / -administration
Schulungen und Workshops
6. www.agentbase.de 6
AngularJS
Einführung
< HTML has angle brackets, so angle brackets, Angular >
Start ~2009
Entwicklung von Google Feedback stockte
Neuentwicklung mit damaligem Angular Framework
2-3 Wochen
17.000 1.500 Codezeilen
Google
hauptsächlich interne Apps (form-driven)
DoubleClick
YouTube Leanback (SmartTV)
7. www.agentbase.de 7
AngularJS
Einführung
“Angular is what HTML would have been, had it been
designed for applications. “ (angularjs.org)
HTML gut für statische Seiten
Angular ergänzt um Syntax und Konstrukte für Web-Apps
Abstraktion von Low-level DOM Operationen
8. www.agentbase.de 8
AngularJS
Einführung
Dinge die der Entwickler nicht braucht…
Manuelle HTML DOM Manipulation
unhandlich und fehleranfällig
Bereitstellen von Daten für und von dem UI
CRUD Operationen sind die wesentlichen Aufgaben
Server Internes Objekt HTML Form
AngularJS arbeitet mit einfachen JavaScript POJOs
Boilerplate Code
Code schreiben, um den eigentlichen Code schreiben zu können
15. www.agentbase.de 15
AngularJS
2-Wege Datenbindung
Model – Single-Source of Truth
Änderung des Models bewirkt Änderung in gesamter Anwendung
Kein Observer notwendig, weniger fehleranfälliger Code
Keine direkte DOM – Maniplation!
17. www.agentbase.de 17
AngularJS
Dirty Checking
View wird sofort aktualisiert wenn das Model sich ändert
innerhalb des aktuellen Scopes (ViewModel)
gilt nur für angezeigte Daten
Es wird ständig auf Aktualisierungen geprüft
Performance-Impact bei starker Nutzung
bei ng-model dirty checking bei jedem Tastendruck
25. www.agentbase.de 25
AngularJS
Services
Services sind Singletons
Erst bei Benutzung instanziiert (Lazy)
Austauschbar
Objekte genutzt mittels Dependency Injection
Angular bringt schon eigene Services mit ( z.B. „$http“)
Verschiedene Typen
Provider komplex
Factory
Service
Value einfach
26. www.agentbase.de 26
AngularJS
Promises
$http-Service läuft asynchron
Promise: mögliches Ergebnis eines asynchronen Calls
Verwendung des Promise z.B. in einem Controller
Durchführung sobald Ergebnis aus Service vorliegt
Ähnlich zu try-catch für synchrone Calls
30. www.agentbase.de 30
AngularJS
Module
Container für verschiedene Teile der Anwendung
Jede Anwendung besteht aus min. einem Modul
Kapselung in wiederverwendbare Module
Laden in beliebiger Reihenfolge
Viele 3rd party Module verfügbar
31. www.agentbase.de 31
AngularJS
Module
Setup in größeren Anwendungen
Ein Modul für jedes Feature
Ein Modul für jede wiederverwendbare Komponente
Direktiven
Filter
Ein Applikations-Modul das alle anderen Module beinhaltet
33. www.agentbase.de 33
AngularJS
Weitere Module
Es gibt eine Vielzahl hinzufügbarer Module
Internationalisierung
Maskenerstellung und Validierung
Sichten, Tabellen und Filter
UI-Elemente
Spinner
Breadcrumb
File-Upload
Messages
…
Charts
und vieles mehr
http://ngmodules.org/ (>1500 Module)
34. www.agentbase.de 34
AngularJS
Bootstrap
CSS / HTML /Javascript Framework von Twitter
Wird gerne zusammen mit AngularJS verwendet
Styling von
Tabellen
Formularen
Buttons
Grids, Responsive
Einige Komponenten machen Probleme wegen jQuery
Spezielle Projekte
UI Bootstrap (http://angular-ui.github.io/bootstrap/)
AngularStrap (http://mgcrea.github.io/angular-strap/)
37. www.agentbase.de 37
AngularJS
Programmieren mit JavaScript
JavaScript Guru Douglas Crockford
spezifizierte JSON
„JavaScript is the only language that I’m aware of that
people feel they don’t need to learn before they start
using it.“
38. www.agentbase.de 38
AngularJS
Test, Test, Tests
mehr „Seriosität“ bei der Entwicklung
Unit Tests
Code-level Testing
Testen von einzelnen Komponenten
Isoliertes Testen
Angular Code Base > 4000 Unit Tests
End-To-End Tests
User-level Testing
Testen Zusammenspiel mehrerer Komponenten
Automatische Browser Tests
Laden von Seiten
Masken Submit
Prüfen auf Vorhandensein von Seiten Elementen
39. www.agentbase.de 39
AngularJS
Test, Test, Tests
Mock-Objekte
Platzhalter für „echte“ Objekte
keine dynamischen Ergebnisse gewünscht
kein Zugriff auf andere Systeme notwendig
Dependency Injection
vereinfacht Testen
Dependencies können relativ einfach „gemocked“ werden
40. www.agentbase.de 40
AngularJS
Unit Tests - Tools
Karma
Test-Runner
JavaScript Command-Line Tool
startet HTTP Server und führt die Tests durch
testet gegen die gängigsten Browser
Jasmine
Test-Framework
Test-Strukturierung
Assertions
ngMock
Angular Modul
liefert definierte Ergebnisse für REST-Calls
41. www.agentbase.de 41
AngularJS
Unit Tests - Jasmine
describe()
Test-Beschreibung
beforeEach() / afterEach()
wird vor / nach jedem Testlauf ausgeführt
expect()
erwartetes Ergebnis eines Testdurchlaufs
toBe() / toEquals / toBeNull() / toBeLessThan() …
Matcher
42. www.agentbase.de 42
AngularJS
Unit Tests - ngMock
module()
lädt ein Angular Modul für den Unit Test
inject()
Dependency Injection für den Unit Test
$controller
Instanziierung von Controllern
$httpBackend
mocken eines http-Service
48. www.agentbase.de 48
AngularJS
Ausblick Version 2.0
Designed für moderne Browser
Internet Explorer > Version 10
mobile Geräte im Vordergrund
ECMAScript 6
Published 06-2015
Weitere Modularisierung
Optimierung Change Detection
Erweitertes Routing
Integration von Authentifikation und Autorisierung
State-basiertes Routing
Vorladen und Verschachteln von Views
49. www.agentbase.de 49
AngularJS
Ausblick Version 2.0
Version 1.x
Controller
$scope
ES5
Angular Module
relevant (geschätzt) bis 2018
Version 2.0
noch Alpha
Web Components
ES6 und ES6 Module
Annotationen
ab (im Laufe von) 2016
Migrationspfad?