SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Philipp Burgmer | WeigleWilczek 
Taugt AngularJS wirklich was? 
Erfahrungsbericht und Ausblick
ABOUT ME 
Philipp Burgmer 
Software Engineer / Consultant / Trainer 
Focus: Frontend, Web Technologies 
WeigleWilczek GmbH 
burgmer@w11k.com
ABOUT US 
WeigleWilczek / W11k 
Software Design, Development & Maintenance 
Consulting, Trainings & Project Kickoff 
Web Applications with AngularJS
Einstieg 
Alltag 
Ausstieg 
Ausblick
EINSTIEG
JAVASCRIPT 
Viele Entwickler wenig Erfahrung 
Fehler oft aus Unwissenheit über Sprache 
Automatische Typ-Konvertierung 
(Konstruktor-)Funktionen und this 
Gültigkeitsbereich von Variablen & Sichtbarkeit 
Dynamische Typisierung & keine eigenen Typen
PROTOTYPING 
Objekt-Graph statt Klassen-Baum 
Meisten Entwickler denken in Klassen 
Wird in AngularJS für Scopes benutzt
HEUTE & MORGEN 
CoffeeScript 
EcmaScript 6 + Traceur 
TypeScript 
Klassen 
Module 
Optionale Typen
ANGULARJS 
Kombiniert viele Konzepte, zu ganzem Framework 
Dependency Injection 
Deklaratives UI / MV* 
Promises 
Für viele Entwickler vieles davon neu 
Erste Gehversuche leicht 
Fundierter Einstieg schwierig / aufwändig
MV* 
Saubere Trennung von UI und UI-Logik 
Testbarkeit 
MV* -> MVC || MVVM || ... 
Scope als Bindeglied 
Überwacht Änderungen am Model 
Nutzt Prototyping für Hierarchie
DI & MODULE 
Keine Lookups, keine Kenntniss von Umgebung 
Reduktion von Boilerplate-Code 
Testbarkeit & Wiederverwendbarkeit 
Komplexität und Boilerplate-Code 
Ein globaler Namensraum 
Services immer als Singletons 
Config-Phase und Provider
PROMISES 
Asynchronität in Single-Threaded-Sprache 
Callback-Hell 
Adaptierte API, aber kein Standard 
Hohes Abstraktionslevel 
Aber auch hohe Komplexität 
Mächtig und elegant wenn verstanden 
Voraussetzung für HTTP Kommunikation
DIREKTIVEN 
Alleinstellungsmerkmal 
Bindeglied: deklaratives UI <-> JavaScript Code 
Kapseln DOM-Manipulation 
Sehr komplexe API 
In 2.0: WebComponents
ALLTAG
PROJEKT 
Keine Struktur von JavaScript vorgegeben 
Code-Menge kann zum Problem werden 
Feature-Orientierte Struktur 
Coding-Richtlinien 
Auf Bibliotheken achten 
JSHint & Tests
TOOLING 
Debuggen im Broswer, entwickeln in der IDE 
Wenig Unterstützung durch die IDE bei APIs 
DI & Code Minimierung 
ng-doc oder TypeScript 
ng-annotate und in Zukunft Annotations
BUILD-SYSTEM 
sehr aktives Umfeld: Grunt, Gulp, ... 
Sehr viele kleine einzelne Tools 
Kompliziertes Setup für mehr als Bespiel-App 
kein High-Level-Build-System à la Maven 
Yoeman Generatoren 
fabs
PERFORMANCE 
Optimierungen in 1.2 und 1.3 
Object.observe in 2.0 
Speicherverbrauch 
JavaScript Code optimieren 
Dynamisches Laden von Code 
DI und Services verstehen 
Code in Services auslagern 
Code möglichst selten ausführen
PERFORMANCE 
Dirty-Check für DataBinding 
Limit: ~2000 watch-expressions 
One-Time-Bindings 
Filter in Expressions vermeiden 
Kleine Controller, kleine Scopes 
Nur in den Scope was in View benötigt
AUSSTIEG
ANGULARJS 
SHOULD I STAY, OR SHOULD I GO 
Grundlegende Konzepte verstehen 
JavaScript lernen 
Vorteile durch Konzepte überwiegen 
Abstraktionsniveau++ 
Große Community & Support Angebote 
STAY!
ALTERNATIVEN 
Knockout 
Backbone 
Ember.JS 
React 
...
AUSBLICK
ECMASCRIPT 6 
Klassen 
Module
ATSCRIPT 
Erweitert ES6 und TypeScript 
Keine neue Sprache 
Transpiler 
Nette Syntax aber auch alles ohne möglich 
Klassen 
Module 
Optionale Typen 
Annotations
AtScript 
- Annotations 
- Introspection 
TypeScript 
- Types 
ES6 
- classes 
- modules 
ES5
import {Inject} from 1 'di/annotations'; 
2 import {Electricity} from '../electricity'; 
3 
4 @Inject(Electricity) 
5 export class Heater { 
6 constructor(electricity) { 
7 this.electricity = electricity; 
8 } 
9 
10 on() { 
11 console.log('Turning on the coffee heater...'); 
12 } 
13 
14 off() { 
15 console.log('Turning off the coffee heater...'); 
16 } 
17 }
ANGULARJS 2.0 
Inspiriert von 
AngularDart 
Community & anderen Frameworks 
Design-Phase 
Kein konkreter Zeitplan -> 2015? 
Google Drive Ordner mit Design-Dokumenten 
Code auf GitHub
ANGULARJS 2.0 
Native Features von EcmaScript6 
Klassen und Module 
Promises 
Web-Standards statt eigener API 
WebComponents 
Object.observe 
Weniger Boilerplate durch Framework 
Mobile First 
Flexibles Routing 
...
Philipp Burgmer 
burgmer@w11k.com 
www.w11k.com 
www.thecodecampus.de

Weitere ähnliche Inhalte

Was ist angesagt?

Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreGregor Biswanger
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...Marc Müller
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heutePhilipp Burgmer
 
Creasoft Akademie - Deep Dive into ASP.NET MVC
Creasoft Akademie - Deep Dive into ASP.NET MVCCreasoft Akademie - Deep Dive into ASP.NET MVC
Creasoft Akademie - Deep Dive into ASP.NET MVCCreasoft AG
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grailsschmichri
 
Ruboto - Ruby on Android
Ruboto - Ruby on AndroidRuboto - Ruby on Android
Ruboto - Ruby on AndroidHeiko Seebach
 
Gwt Techtalk Präsentation
Gwt Techtalk PräsentationGwt Techtalk Präsentation
Gwt Techtalk Präsentationmlegenhausen
 
Creasoft c-Day 2009 - Webtechnologien der Zukunft
Creasoft c-Day 2009 - Webtechnologien der ZukunftCreasoft c-Day 2009 - Webtechnologien der Zukunft
Creasoft c-Day 2009 - Webtechnologien der ZukunftCreasoft AG
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Timo Stollenwerk
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreGregor Biswanger
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3Roman Hutterer
 
Creasoft - Windows Azure
Creasoft - Windows AzureCreasoft - Windows Azure
Creasoft - Windows AzureCreasoft AG
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenPeter Rozek
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS ProgrammierungMarkus Leutwyler
 

Was ist angesagt? (19)

Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
 
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
DWX 2017 - Alternativen zu Visual-Studio-Testtools: Wann lohnt es sich auch m...
 
EnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heuteEnterJS 2015 - JavaScript von Morgen schon heute
EnterJS 2015 - JavaScript von Morgen schon heute
 
Creasoft Akademie - Deep Dive into ASP.NET MVC
Creasoft Akademie - Deep Dive into ASP.NET MVCCreasoft Akademie - Deep Dive into ASP.NET MVC
Creasoft Akademie - Deep Dive into ASP.NET MVC
 
Informatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und GrailsInformatik Seminar Groovy Und Grails
Informatik Seminar Groovy Und Grails
 
Ruboto - Ruby on Android
Ruboto - Ruby on AndroidRuboto - Ruby on Android
Ruboto - Ruby on Android
 
Gwt Techtalk Präsentation
Gwt Techtalk PräsentationGwt Techtalk Präsentation
Gwt Techtalk Präsentation
 
Creasoft c-Day 2009 - Webtechnologien der Zukunft
Creasoft c-Day 2009 - Webtechnologien der ZukunftCreasoft c-Day 2009 - Webtechnologien der Zukunft
Creasoft c-Day 2009 - Webtechnologien der Zukunft
 
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
Who let the robot out? Qualitativ hochwertige Software durch Continuous Integ...
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
3. Night of the pack
3. Night of the pack3. Night of the pack
3. Night of the pack
 
Froscamp2010_padre
Froscamp2010_padreFroscamp2010_padre
Froscamp2010_padre
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3
 
Creasoft - Windows Azure
Creasoft - Windows AzureCreasoft - Windows Azure
Creasoft - Windows Azure
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign Testen
 
Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
Einführung in die webOS Programmierung
Einführung in die webOS ProgrammierungEinführung in die webOS Programmierung
Einführung in die webOS Programmierung
 

Ähnlich wie Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick

JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013Oliver Zeigermann
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...Lukas Eder
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Rich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit AndroidRich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit AndroidDominik Helleberg
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?POINT. Consulting GmbH
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for BeginnersUlrich Krause
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungEduard Hildebrandt
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookUlrich Krause
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsAndreas Schulte
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 

Ähnlich wie Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick (20)

JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Rich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit AndroidRich Graphics & OpenGL mit Android
Rich Graphics & OpenGL mit Android
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
IntelliJ für Flex
IntelliJ für FlexIntelliJ für Flex
IntelliJ für Flex
 
Net@night asp.net mvc
Net@night asp.net mvcNet@night asp.net mvc
Net@night asp.net mvc
 
Werkzeugkasten
WerkzeugkastenWerkzeugkasten
Werkzeugkasten
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?
 
GWT
GWTGWT
GWT
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
java apis
java apisjava apis
java apis
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture LösungAndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
AndroMDA - Einführung in eine Open Source Model Driven Architecture Lösung
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
B3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite ApplicationsB3 Lotus Expeditor Und Composite Applications
B3 Lotus Expeditor Und Composite Applications
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
CDI
CDICDI
CDI
 

Mehr von Philipp Burgmer

Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenPhilipp Burgmer
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSPhilipp Burgmer
 
Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...
Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...
Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...Philipp Burgmer
 
WJAX 2012 - Web Apps With AngularJS
WJAX 2012 - Web Apps With AngularJSWJAX 2012 - Web Apps With AngularJS
WJAX 2012 - Web Apps With AngularJSPhilipp Burgmer
 
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJSKarlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJSPhilipp Burgmer
 
Web Applications with AngularJS
Web Applications with AngularJSWeb Applications with AngularJS
Web Applications with AngularJSPhilipp Burgmer
 

Mehr von Philipp Burgmer (7)

Sicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-AnwendungenSicherheit in Single-Page-Web-Anwendungen
Sicherheit in Single-Page-Web-Anwendungen
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
 
Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...
Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...
Grunt, Gulp & fabs: Build Systems and Development-Workflow for Modern Web-App...
 
WJAX 2012 - Web Apps With AngularJS
WJAX 2012 - Web Apps With AngularJSWJAX 2012 - Web Apps With AngularJS
WJAX 2012 - Web Apps With AngularJS
 
JavaMagazin - AngularJS
JavaMagazin - AngularJSJavaMagazin - AngularJS
JavaMagazin - AngularJS
 
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJSKarlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
Karlsruher Entwicklertag 2013 - Webanwendungen mit AngularJS
 
Web Applications with AngularJS
Web Applications with AngularJSWeb Applications with AngularJS
Web Applications with AngularJS
 

Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick

  • 1. Philipp Burgmer | WeigleWilczek Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
  • 2. ABOUT ME Philipp Burgmer Software Engineer / Consultant / Trainer Focus: Frontend, Web Technologies WeigleWilczek GmbH burgmer@w11k.com
  • 3. ABOUT US WeigleWilczek / W11k Software Design, Development & Maintenance Consulting, Trainings & Project Kickoff Web Applications with AngularJS
  • 6. JAVASCRIPT Viele Entwickler wenig Erfahrung Fehler oft aus Unwissenheit über Sprache Automatische Typ-Konvertierung (Konstruktor-)Funktionen und this Gültigkeitsbereich von Variablen & Sichtbarkeit Dynamische Typisierung & keine eigenen Typen
  • 7. PROTOTYPING Objekt-Graph statt Klassen-Baum Meisten Entwickler denken in Klassen Wird in AngularJS für Scopes benutzt
  • 8. HEUTE & MORGEN CoffeeScript EcmaScript 6 + Traceur TypeScript Klassen Module Optionale Typen
  • 9. ANGULARJS Kombiniert viele Konzepte, zu ganzem Framework Dependency Injection Deklaratives UI / MV* Promises Für viele Entwickler vieles davon neu Erste Gehversuche leicht Fundierter Einstieg schwierig / aufwändig
  • 10. MV* Saubere Trennung von UI und UI-Logik Testbarkeit MV* -> MVC || MVVM || ... Scope als Bindeglied Überwacht Änderungen am Model Nutzt Prototyping für Hierarchie
  • 11. DI & MODULE Keine Lookups, keine Kenntniss von Umgebung Reduktion von Boilerplate-Code Testbarkeit & Wiederverwendbarkeit Komplexität und Boilerplate-Code Ein globaler Namensraum Services immer als Singletons Config-Phase und Provider
  • 12. PROMISES Asynchronität in Single-Threaded-Sprache Callback-Hell Adaptierte API, aber kein Standard Hohes Abstraktionslevel Aber auch hohe Komplexität Mächtig und elegant wenn verstanden Voraussetzung für HTTP Kommunikation
  • 13. DIREKTIVEN Alleinstellungsmerkmal Bindeglied: deklaratives UI <-> JavaScript Code Kapseln DOM-Manipulation Sehr komplexe API In 2.0: WebComponents
  • 14.
  • 15.
  • 16.
  • 17.
  • 19. PROJEKT Keine Struktur von JavaScript vorgegeben Code-Menge kann zum Problem werden Feature-Orientierte Struktur Coding-Richtlinien Auf Bibliotheken achten JSHint & Tests
  • 20. TOOLING Debuggen im Broswer, entwickeln in der IDE Wenig Unterstützung durch die IDE bei APIs DI & Code Minimierung ng-doc oder TypeScript ng-annotate und in Zukunft Annotations
  • 21. BUILD-SYSTEM sehr aktives Umfeld: Grunt, Gulp, ... Sehr viele kleine einzelne Tools Kompliziertes Setup für mehr als Bespiel-App kein High-Level-Build-System à la Maven Yoeman Generatoren fabs
  • 22. PERFORMANCE Optimierungen in 1.2 und 1.3 Object.observe in 2.0 Speicherverbrauch JavaScript Code optimieren Dynamisches Laden von Code DI und Services verstehen Code in Services auslagern Code möglichst selten ausführen
  • 23. PERFORMANCE Dirty-Check für DataBinding Limit: ~2000 watch-expressions One-Time-Bindings Filter in Expressions vermeiden Kleine Controller, kleine Scopes Nur in den Scope was in View benötigt
  • 25. ANGULARJS SHOULD I STAY, OR SHOULD I GO Grundlegende Konzepte verstehen JavaScript lernen Vorteile durch Konzepte überwiegen Abstraktionsniveau++ Große Community & Support Angebote STAY!
  • 26. ALTERNATIVEN Knockout Backbone Ember.JS React ...
  • 29. ATSCRIPT Erweitert ES6 und TypeScript Keine neue Sprache Transpiler Nette Syntax aber auch alles ohne möglich Klassen Module Optionale Typen Annotations
  • 30. AtScript - Annotations - Introspection TypeScript - Types ES6 - classes - modules ES5
  • 31. import {Inject} from 1 'di/annotations'; 2 import {Electricity} from '../electricity'; 3 4 @Inject(Electricity) 5 export class Heater { 6 constructor(electricity) { 7 this.electricity = electricity; 8 } 9 10 on() { 11 console.log('Turning on the coffee heater...'); 12 } 13 14 off() { 15 console.log('Turning off the coffee heater...'); 16 } 17 }
  • 32. ANGULARJS 2.0 Inspiriert von AngularDart Community & anderen Frameworks Design-Phase Kein konkreter Zeitplan -> 2015? Google Drive Ordner mit Design-Dokumenten Code auf GitHub
  • 33. ANGULARJS 2.0 Native Features von EcmaScript6 Klassen und Module Promises Web-Standards statt eigener API WebComponents Object.observe Weniger Boilerplate durch Framework Mobile First Flexibles Routing ...
  • 34. Philipp Burgmer burgmer@w11k.com www.w11k.com www.thecodecampus.de