SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
Angulardart 2 vs React vs Elm
Mohammed El Batya - Münchner Webwoche 2016
Mohammed El Batya
Wer bin ich?
Job 1: Lean Java Expert @ comSysto
Job 2: Freiberufl. Wirtschaftsinformatiker
Job 3: PendelPanda - Entwickler
Hobby: Spielen und Entdecken :)
Mein Skill-Level
● ReactJS
● AngularDart2
● Elm
Vorgeschichte
2011 2016
PendelPanda - Fahrplanauskunft
Heute
Von PendelPanda “inspirierte” Apps
PendelMe - iOSSBB - Android / iOS?
PendelPanda.de
PendelPanda.de
PendelPanda.de
... in den nächsten zwei Wochen
PendelPanda.dePendelPanda.one
Welches Framework?
v1 / v2
v1 / v2
stateofjs.com/2016/frontend
Elm?
http://elm-lang.org
Finale Auswahl
2
JS +JSX
Dart
Elm
Facebook
Google
Evan Czaplicki
Sprache Entwickler
Masterarbeit
Kompilieren / Transpilieren
JSX
Dart
Elm
Pures
JavaScript
Assemblersprache
des modernen Webs
Syntax
React: JavaScript + JSX
React JavaScript + JSX - Beispiel 1
Pseudo-HTML als Erweiterung der Skriptsprache
React JavaScript + JSX - Beispiel 2
JSX Elemente können auch Variablen zugewiesen werden.
React JavaScript + JSX - Beispiel 3
Der Rest ist ganz “normales” JavaScript
Syntax
AngularDart2: Dart
Dart - Beispiel 1
“Objektorientierter Mix aus JavaScript und Java”
Dart - Beispiel 2
Annotations werden umfangreich verwendet
Dart - Vorteile gegenüber JavaScript
● Klassen, Interfaces, Vererbung
● Typprüfung!!! optional
● Einfach weniger Stolperfallen
Syntax
ELM
ELM - Eigenschaften
● Rein funktional
● 100%tige Immutabilität
● Statische Typisierung
● Sonderbehandlung von Nebeneffekte
● Pseudo-HTML als Teil der Sprache
ELM - Unterschiede zu Dart / JavaScript
● Keine Objekte, Klassen, Interfaces etc.
● Keine For, While, Do Schleifen
● Kein “Null” oder ähnliches
● Keine Laufzeitfehler
● Keine unkontrollierten Nebeneffekte
● Pattern Matching und Destrukturierung
ELM - Beispiel für Typen
ELM - Beispiel für Funktionen
Implementierung
Deklaration der Funktionssignatur
// Finde in der Liste Model.Buttons
// einen Button mit der gegebenen Button.Id
ELM - Beispiel für Funktionen im Detail
Funktionsname RückgabetypTypen der 2 Parameter
Namen der 2 Parameter
ELM - Pseudo-HTML - Beispiel
ELM - Immutabilität
Komponentenbasierte
UI - Frameworks
React und Angular
Komponentenbasierte UIs
Click me
Hottest Users
On
Bla bla blaaaaa
Bla bla blaaaaa la bla blaaaaa Bla bla
blaaaaa Bla bla blaaaaa Bla bla blaaaaa
● Wiederverwendbarkeit
● Testbarkeit
● Einheitliche UI
● Wartbarkeit
● Komponierbarkeit
Off
UI-Komponenten im Detail - z.B. Button
Layout
Click me
Click me
Style
Click me
Click Me
Click me
Click Me
Model
External Model
{
caption : ‘Click me’
isDisabled : false
clickHandler: addAnItem
...
}
Logic
If MouseDown
Then
pressedState = Pressed
If MouseUp
Then
pressedState = Unpressed
clickHandler.call()Internal Model
{
pressedState : Pressed
selectionState: NotSelected
...
}
Interaktion einer Komponente mit Umwelt
Kind-UI-Komponente
Eltern-UI-Komponente
Public Model
StyleLayout
Logic
Internal Model
Klare Schnittstelle
für Interaktion mit Komponente
Daten / Einstellungen rein
Daten / Events raus
Aufgabe eines komponentenbasierten UI-Frameworks
Kind-UI-Komponente
Eltern-UI-Komponente
Public Model
StyleLayout
Logic
Internal Model
Klare Schnittstelle
für Interaktion mit Komponente
Daten / Einstellungen rein
Daten / Events raus
UI Framework
Später :P
Konkrete Beispiele?
Die Elm
Architektur
Model View
Elm-Architektur
Model
Model Model
Model Model
Model
Model
View View
View
View View
View
View
View
Nicht Komponentenorientiert
Elm-Architektur
view : Model -> Html Msg
update : Msg -> Model -> (Model, Cmd Msg)
Initial Message
+ Initial Model
New Model
Update Virtual
DOM
Render Diff to
Screen
Follow-Up Message
Events
User-Events like Clicks
ClockTicks, HTTP-Response, etc
4 Grundzutaten eines Elm-Programms
// Message + Altes Modell => Neues Modell + Folgemessage
update : Msg -> Model -> (Model, Cmd Msg)
// Model => HTML, welches Messages erzeugen kann
view : Model -> Html Msg
// Typdefinition des Models
type alias Model
// Eine Art Enum aller möglichen Messages der App
type Message
PendelPanda’s
Komposition
Prototyp - Funktionsumfang
Komponenten
App
ActionBar
ButtonGrid
GridButton
Paw
Connection
Zeig den
Code !!!
Anglular: PendelPanda.one
Elm: /elm/index.html
React: /react/index.html
Timetravel Debugging

Weitere ähnliche Inhalte

Ähnlich wie Grundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich

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
 
Component Based UI mit Angular
Component Based UI mit AngularComponent Based UI mit Angular
Component Based UI mit AngularGregor Woiwode
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenChristian Baranowski
 
Five Finger Death Punch
Five Finger Death PunchFive Finger Death Punch
Five Finger Death PunchMT AG
 
Den falschen plan perfekt ausführen
Den falschen plan perfekt ausführenDen falschen plan perfekt ausführen
Den falschen plan perfekt ausführenNils Langner
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScriptManfred Steyer
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJSSebastian Springer
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in ScrumFrank Düsterbeck
 
Vorstellung Open Social Ipc 2009
Vorstellung Open Social Ipc 2009Vorstellung Open Social Ipc 2009
Vorstellung Open Social Ipc 2009fruske
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenPeter Rozek
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit AngularJens Binfet
 
Celery eine asynchrone task queue (nicht nur) für django
Celery   eine asynchrone task queue (nicht nur) für djangoCelery   eine asynchrone task queue (nicht nur) für django
Celery eine asynchrone task queue (nicht nur) für djangoMarkus Zapke-Gründemann
 
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateQS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateMichael Mirold
 
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...e-dialog GmbH
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Jürg Stuker
 
Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...
Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...
Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...Mathias Magdowski
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009Andreas Schulte
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenSebastian Springer
 

Ähnlich wie Grundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich (20)

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
 
Component Based UI mit Angular
Component Based UI mit AngularComponent Based UI mit Angular
Component Based UI mit Angular
 
Anforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML GrundlagenAnforderungsanalyse und UML Grundlagen
Anforderungsanalyse und UML Grundlagen
 
Five Finger Death Punch
Five Finger Death PunchFive Finger Death Punch
Five Finger Death Punch
 
3. Night of the pack
3. Night of the pack3. Night of the pack
3. Night of the pack
 
Den falschen plan perfekt ausführen
Den falschen plan perfekt ausführenDen falschen plan perfekt ausführen
Den falschen plan perfekt ausführen
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript
 
Große Applikationen mit AngularJS
Große Applikationen mit AngularJSGroße Applikationen mit AngularJS
Große Applikationen mit AngularJS
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in Scrum
 
Vorstellung Open Social Ipc 2009
Vorstellung Open Social Ipc 2009Vorstellung Open Social Ipc 2009
Vorstellung Open Social Ipc 2009
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign Testen
 
Progressive Web Apps mit Angular
Progressive Web Apps mit AngularProgressive Web Apps mit Angular
Progressive Web Apps mit Angular
 
MVVM mit WPF
MVVM mit WPFMVVM mit WPF
MVVM mit WPF
 
Celery eine asynchrone task queue (nicht nur) für django
Celery   eine asynchrone task queue (nicht nur) für djangoCelery   eine asynchrone task queue (nicht nur) für django
Celery eine asynchrone task queue (nicht nur) für django
 
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateQS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
 
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
Google Analytics Konferenz 2019_App Tracking_Runa Reno (Booking.com) & Markus...
 
Top 10 Internet Trends 2001
Top 10 Internet Trends 2001Top 10 Internet Trends 2001
Top 10 Internet Trends 2001
 
Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...
Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...
Chancen und Herausforderungen von ChatGPT - Wie kann mir ChatGPT helfen, mein...
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
 
Qualitätssicherung in Webprojekten
Qualitätssicherung in WebprojektenQualitätssicherung in Webprojekten
Qualitätssicherung in Webprojekten
 

Mehr von Comsysto Reply GmbH

Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyComsysto Reply GmbH
 
ljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdfljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdfComsysto Reply GmbH
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableComsysto Reply GmbH
 
Invited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdfInvited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdfComsysto Reply GmbH
 
MicroFrontends für Microservices
MicroFrontends für MicroservicesMicroFrontends für Microservices
MicroFrontends für MicroservicesComsysto Reply GmbH
 
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...Comsysto Reply GmbH
 
Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup Comsysto Reply GmbH
 
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...Comsysto Reply GmbH
 
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo..."Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...Comsysto Reply GmbH
 
Data lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid ArchitecturesData lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid ArchitecturesComsysto Reply GmbH
 
Building a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformBuilding a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformComsysto Reply GmbH
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Comsysto Reply GmbH
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNComsysto Reply GmbH
 
Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)Comsysto Reply GmbH
 
Java cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica KrizanicJava cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica KrizanicComsysto Reply GmbH
 
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016Comsysto Reply GmbH
 
Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016Comsysto Reply GmbH
 
SPARK STREAMING Spark Hadoop User Group Munich Meetup 2016
SPARK STREAMING  Spark Hadoop User Group Munich Meetup 2016SPARK STREAMING  Spark Hadoop User Group Munich Meetup 2016
SPARK STREAMING Spark Hadoop User Group Munich Meetup 2016Comsysto Reply GmbH
 
Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16Comsysto Reply GmbH
 

Mehr von Comsysto Reply GmbH (20)

Architectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and ConsistentlyArchitectural Decisions: Smoothly and Consistently
Architectural Decisions: Smoothly and Consistently
 
ljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdfljug-meetup-2023-03-hexagonal-architecture.pdf
ljug-meetup-2023-03-hexagonal-architecture.pdf
 
Software Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuableSoftware Architecture and Architectors: useless VS valuable
Software Architecture and Architectors: useless VS valuable
 
Invited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdfInvited-Talk_PredAnalytics_München (2).pdf
Invited-Talk_PredAnalytics_München (2).pdf
 
MicroFrontends für Microservices
MicroFrontends für MicroservicesMicroFrontends für Microservices
MicroFrontends für Microservices
 
Alles offen = gut(ai)
Alles offen = gut(ai)Alles offen = gut(ai)
Alles offen = gut(ai)
 
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
Bable on Smart City Munich Meetup: How cities are leveraging innovative partn...
 
Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup Smart City Munich Kickoff Meetup
Smart City Munich Kickoff Meetup
 
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
Data Reliability Challenges with Spark by Henning Kropp (Spark & Hadoop User ...
 
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo..."Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
"Hadoop Data Lake vs classical Data Warehouse: How to utilize best of both wo...
 
Data lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid ArchitecturesData lake vs Data Warehouse: Hybrid Architectures
Data lake vs Data Warehouse: Hybrid Architectures
 
Building a fully-automated Fast Data Platform
Building a fully-automated Fast Data PlatformBuilding a fully-automated Fast Data Platform
Building a fully-automated Fast Data Platform
 
Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications Apache Apex: Stream Processing Architecture and Applications
Apache Apex: Stream Processing Architecture and Applications
 
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMNEin Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
Ein Prozess lernt laufen: LEGO Mindstorms Steuerung mit BPMN
 
Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)Geospatial applications created using java script(and nosql)
Geospatial applications created using java script(and nosql)
 
Java cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica KrizanicJava cro 2016 - From.... to Scrum by Jurica Krizanic
Java cro 2016 - From.... to Scrum by Jurica Krizanic
 
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
Spark RDD-DF-SQL-DS-Spark Hadoop User Group Munich Meetup 2016
 
Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016Machinelearning Spark Hadoop User Group Munich Meetup 2016
Machinelearning Spark Hadoop User Group Munich Meetup 2016
 
SPARK STREAMING Spark Hadoop User Group Munich Meetup 2016
SPARK STREAMING  Spark Hadoop User Group Munich Meetup 2016SPARK STREAMING  Spark Hadoop User Group Munich Meetup 2016
SPARK STREAMING Spark Hadoop User Group Munich Meetup 2016
 
Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16Caching and JCache with Greg Luck 18.02.16
Caching and JCache with Greg Luck 18.02.16
 

Grundlegende Konzepte von Elm, React und AngularDart 2 im Vergleich