Mobile Apps mit. React-Native. Manuel

Ähnliche Dokumente
JS goes mobile: Eine Übersicht. Frederik von Berg w11k / thecodecampus

App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Cross-Platform Mobile Apps

Cross-Plattform-App- Entwicklung mit Visual Studio 2017

Plattformunabhängige App-Entwicklung - Eine für alle?

Eine App, viele Plattformen

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Zentrale Informatik. Cross-platform Apps. Andrea Grössbauer David Meier. 11/11/15 Lunchveranstaltungen HS16 - Crossplatform Apps 1

Echte Cross-Plattform Anwendungen mit Angular 2 in Action!

Cross-Platform Mobile Development mit Xamarin Mark

Cross Platform Development Heute Windows, morgen Android, übermorgen Xbox

Möglichkeiten, Vorteile und Grenzen der Cross-Plattform-Entwicklung

Mobile App Testing. Software Test im mobilen Umfeld ATB Expertentreff, Wien, Functional Test Automation Tools

Cross Platform Development mit SharePoint

Möglichkeiten, Vorteile und Grenzen der Cross-Plattform-Entwicklung

JavaFX auf Mobile. von Stefan Barth und Stefan Heinze

Mobile Development in.net mit Xamarin

Der mobile Technologie-Dschungel Eine Roadmap. Dr. Frank

MOBILE ENTERPRISE APPLICATION PLATFORM (MEAP)

Jörg Neumann Acando GmbH

Mobility mit IBM Worklight Erste Schritte zu einer mobilen App. Benjamin Stein, Consultant Stuttgart,

Cross Plattform App Developement. Simon Groth

APEX DESKTOP APPS. Interaktion mit dem Client System

Mobile API 2.0 Partizipative App Entwicklung

Meine App, die Cloud und ich

Projekte. Beratung. Spezialisten. FAQs zur Technik. IKS-Thementag FAQs zur Technik 1 61

Mobile App development mit Xamarin. Christian Hassa Andreas Willich TechTalk Software AG

Programmierung mobiler Geräte

Bring Your Own Device in der Industrie

Öko APEX Hybride Lösung für Smartphones mit APEX und PhoneGap

NativeScript & Angular 2

Mobile Angebote Strategie einer Verwaltung. Freie und Hansestadt Hamburg Dr. Ursula Dankert

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

Mit Cloud Power werden Sie zum

Architekturen mobiler Multi Plattform Apps

So#ware- Engineering und Management für eine Smartphone App

Entwicklung und Integration mobiler Anwendungen. <Speaker> Oracle Deutschland B.V. & Co. KG

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Smartphone Entwicklung mit Android und Java

Mit Cloud Power werden Sie zum

Ein mobiler Electronic Program Guide

APEX und Phonegap? Das kann APEX doch mit HTML5! APEX connect Düsseldorf, 10. Juni 2015 Daniel Horwedel. APEX und Phonegap?

FOSSGIS 2012, Dessau. GeoExt Mobile (GXM) GIS WebApps mit nativem Look and Feel für unterwegs. Marc Jansen, terrestris GmbH & Co.

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz

Embedded Computing Conference 2014 Embedded UI Qt5

The app the crashes, before the breakpoint is reached: Code to the event:

Integration mobiler Endgeräte in Medizinprodukte und Medizintechnik-nahe Produkte

Präsentation Von Laura Baake und Janina Schwemer

Cross-Platform Entwicklung mit Xamarin: Erfahrungen eines Software-Ingenieurs

Mobile Kartenanwendungen im Web oder als App?

Apps entwickeln mit HTML und Javascript

HFT App. Prof. Dr. Gerhard Wanner Michael Kolb B.Sc. Sonntag, 26. Mai 13

Konvergenz von Mobile Web und Mobile App? Aus Sicht eines Entwicklers. Salvatore Sferrazza Senior Technical Consultant, Netbiscuits GmbH

Good Practice: Entwicklung einer Smartphone App mit Unterstützung von Open Text WSM. OpenText Websolutions Usergroup,

Autorensysteme für mobile Anwendungen - Totgesagte leben länger. Prof. Dr. Michael Bauer Autorensysteme

Azure Community Deutschland. Microsoft Azure. Was ist drin für Unternehmen? Oliver Michalski (Senior Software Engineer.NET)

1 Entwickeln mit PhoneGap

User Experience und Cross-Plattform Entwicklung. Spektrum mobiler Funktionen Cross Platform SDK landscape Cross Platform Design Pattern

Einführung mobile Entwicklungsplattform Neptune Application Designer Fink IT-Solutions Christian Fink, Andreas Hofmann

JavaScript Frameworks für Mobile

ios, Android, WP7... Alle nativ auf einen Streich!

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

Mobility Kongress - HS Würzburg-Schweinfurth. Enterprise Apps und Integration in bestehende Enterprise Architekturen - AM BEISPIEL AUTOMOTIVE.

Marcus Ross. PhoneGap. Mobile Cross-Plattform-Entwicklung mit Apache Cordova & Co. dpunkt.verlag

Vergleichsstudie zur Entwicklung von mobilen Applikationen auf der Basis von Android, ios und HTML5

Android Testautomatisierung mit dem Framework Robotium

WEBAPPS MEDIEN ZWISCHEN TECHNOLOGIE UND GESELLSCHAFT PROF. DR. MANFRED THALLER JONAS SCHOPHAUS UNI KÖLN WS 2012

Lauter nützliche Apps!? Was sind Apps, und wie werden diese entwickelt?

Romano Roth & Oliver Brack Zühlke Engineering AG

» Technologien, Trends, Visionen Architekturen für mobile Anwendungen

Thomas Claudius Huber Trivadis Services AG. Endlich Cross-Platform: Universal- Windows-Apps für Windows 10

Appery.io Mobile Apps schnell und einfach entwickeln

Cross-Platform Mobile mit.net

Java GUI Quo vadis? Björn Müller, CaptainCasa

Workshop 6 (ws6c) native Entwicklung für mobile Geräte

re-lounge GmbH MEDIENBÜRO

ADF Mobile konkret Best Practices Live erklärt. Jan Ernst

Web-Apps mit jquery Mobile

TUT1 Javascript-Frameworks zum Erstellen von plattformunabhängigen mobilen Anwendungen

Mobile Anwendungen mit Qooxdoo Mobile erstellen

FileMaker Go Alternativen

Frontend-Entwicklung mit JavaScript

DataSpace 2.0 Die sichere Kommunikations-Plattform für Unternehmen und Organisationen. Your Data. Your Control

2.1. Short description to bug Xamarin.Forms: ListView not scrollable in a ScrollView in a Stacklayout on Android

Apps für alle Plattformen entwickeln!

Kerry W. Zühlke Engineering GmbH

Christian Immler. Der Crashkurs für Android, und Windows Phone. Mit 309 Abbildungen

MOBILE WEBANWENDUNGEN MIT JQUERY MOBILE UND PRIMEFACES MOBILE. Giebelhaus Alexander 1

Transkript:

Mobile Apps mit React-Native Manuel Mauky @manuel_mauky

Mobile Apps?

Mobile Apps? - Welche Möglichkeiten existieren? Native Android ios

Mobile Apps? - Welche Möglichkeiten existieren? Native Android ios Web App Single-Page-App im Browser

Mobile Apps? - Welche Möglichkeiten existieren? Native Android ios HTML5 Hybrid Web-App in native Wrapper/WebView - Cordova - PhoneGap - Ionic Web App Single-Page-App im Browser

Mobile Apps? - Welche Möglichkeiten existieren? Native Android ios HTML5 Hybrid Web-App in native Wrapper/WebView - Cordova - PhoneGap - Ionic Web App Single-Page-App im Browser Andere Hybrid - JavaFX

Mobile Apps? - Welche Möglichkeiten existieren? HTML5 Hybrid Native Android ios Native Cross-Plattform - React-Native - NativeScript - Xamarin Web-App in native Wrapper/WebView - Cordova - PhoneGap - Ionic Web App Single-Page-App im Browser Andere Hybrid - JavaFX

Vergleich mit HTML5-Cross-Plattform Gemeinsamkeiten - JavaScript - CSS* - natives Package (apk, ipa) - App Stores Unterschiede - kein HTML - keine WebView - React-Native rendert native Componenten

Vergleich mit HTML5-Cross-Plattform React-Native Hybrid App Native Java/C++ Bridge (C++/Java) JS VM App.js App WebView index.html App app.css app.js System APIs OS System APIs OS

React-Native React React-Native Erstellung von UI-Komponenten React für native Anwendungen zu nutzen Entwickelt von Facebook seit 2013 OpenSource seit 2015

React

React DOM import React from 'react' class HelloWorld extends React.Component { render() { return ( <div> <p>hello {this.props.name}</p> </div> ) } } // usage <HelloWorld name='hugo' />

React DOM import React from 'react' const HelloWorld = (props) => ( <div> <p>hello {props.name}</p> </div> ) // usage <HelloWorld name='hugo' />

Composition import React from 'react' const HelloWorld = (props) => ( <div> <p>hello {props.name}</p> </div> ) const HelloList = (props) => ( <ul> <li><helloworld name='hugo' /></li> <li><helloworld name='marlene' /></li> <li><helloworld name='luise' /></li> </ul> )

import React from 'react' const HelloWorld = (props) => ( <div> <p>hello {props.name}</p> </div> ) const HelloList = (props) => ( <ul> { props.names.map(name => <li><helloworld name={name} /></li>) } </ul> ) // usage <HelloList names={['hugo', 'Marlene', 'Luise']} />

import React from 'react' const HelloList = (props) => { if(props.names.length === 0) { return <p>niemand da!</p> } else { return <ul> { props.names.map(name => ( <li> <HelloWorld name={name} /> </li> )) } </ul> } } // usage <HelloList names={['hugo', 'Marlene', 'Luise']} />

import React from 'react' const HelloWorld = (props) => ( <div> <p>hello {props.name}</p> </div> ) const HelloList = (props) => ( <ul> { props.names.map(name => <li><helloworld name='hugo' /></li>) } </ul> ) // usage <HelloList names={['hugo', 'Marlene', 'Luise']} />

React-Native

import React from 'react' import { View, Text, FlatList } from 'react-native' const HelloWorld = (props) => ( <View> <Text>Hello {props.name}</text> </View> ) const HelloList = (props) => ( <FlatList data={props.names} renderitem={({item}) => <HelloWorld name={item} />} /> ) // usage <HelloList names={['hugo', 'Marlene', 'Luise']} />

"Write once, run anywhere" "Learn once, write anywhere"

Komponenten View Text TextInput DatePicker Switch Slider Image Button Modal StatusBar Picker ListView ScrollView WebView

APIs Accessibility Alert Clipboard Geolocation Animation Network-Info Storage Camera Share Timers Vibration Keyboard

Apps Bauen

Apps bauen import { Text, View, AppRegistry } from 'react-native' const App = (props) => ( <View> <Text>Hallo Welt> </View> ); AppRegistry.registerComponent('myapp', () => App);

Apps bauen import { Text, View, AppRegistry } from 'react-native' const App = (props) => ( <View> <Text>Hallo Welt> </View> ); AppRegistry.registerComponent('myapp', () => App);

Styling

Styling const styles = StyleSheet.create({ container: { height: 500, backgroundcolor: 'coral' }, text: { fontsize: 40, color: '#fff8dc' } }) const App = (props) => ( <View style={styles.container}> <Text style={styles.text}>hallo Welt> </View> );

Styling const styles = StyleSheet.create({ container: { height: 500, backgroundcolor: 'coral' }, text: { fontsize: 40, color: '#fff8dc' } }) const App = (props) => ( <View style={styles.container}> <Text style={styles.text}>hallo Welt> </View> );

Layout

Layout? FlexBox! const styles = StyleSheet.create({ container: { flex: 1, justifycontent: 'center', backgroundcolor: 'coral' }, text: { fontsize: 40, color: '#fff8dc' } }) const App = (props) => ( <View style={styles.container}> <Text style={styles.text}>hallo Welt> </View> );

Layout? FlexBox! const styles = StyleSheet.create({ container: { flex: 1, justifycontent: 'center', backgroundcolor: 'coral' }, text: { fontsize: 40, color: '#fff8dc' } }) const App = (props) => ( <View style={styles.container}> <Text style={styles.text}>hallo Welt> </View> );

Layout? FlexBox! const styles = StyleSheet.create({ container: { flex: 1, justifycontent: 'center', alignitems: 'center', backgroundcolor: 'coral' }, text: { fontsize: 40, color: '#fff8dc' } }) const App = (props) => ( <View style={styles.container}> <Text style={styles.text}>hallo Welt> </View> );

Plattform-Spezifische Komponenten

Plattformspezifische Komponenten import { Text, Platform } fron 'react-native' const HelloWorld = (props) => { let greeting; if(platform.os === 'ios') { greeting = 'Welcome on ios'; } else { greeting = 'Hi Android user'; } } return <Text>{greeting}</Text>

Plattformspezifische Komponenten import { Text, Platform } fron 'react-native' const HelloWorld = (props) => { let greeting; if(platform.os === 'ios') { greeting = 'Welcome on ios'; } else { greeting = 'Hi Android user'; } } return <Text>{greeting}</Text>

Plattformspezifische Komponenten import { Text, Platform } fron 'react-native' const HelloWorld = (props) => { let greeting; if(platform.os === 'ios') { greeting = 'Welcome on ios'; } else { greeting = 'Hi Android user'; } } return <Text>{greeting}</Text> Welcome on ios

// HelloWorld.ios.js const HelloWorld = (props) => ( <Text>Welcome on ios</text> ) // HelloWorld.android.js const HelloWorld = (props) => ( <Text>Hi Android user</text> ) // SomeOtherComponent.js import HelloWorld from 'HelloWorld' const SomeOtherComponent = (props) => ( <View> <HelloWorld /> </View> ) Welcome on ios

Netzwerk - Fetch API (Spec in Progress) fetch('https://blubba.io/api').then((response) => response.json()).then((json) => { console.log("data:", json) });

Demo

Fazit

Plattformen React DOM: Browser React-Native: - Android, ios offiziell Supported - Windows 10 support von Microsoft - Windows 7-8 durch Community - MacOS durch Community - Ubuntu durch Canonical :-( React VR

Vorteile React-Native - Eine Art zu Programmieren auf mehreren Plattformen - React + Redux - OOP Funktional - Dev-Tools - Time-Travel - Live-Reloading - Aktive Community - Schnelle Ergebnisse auf verschiedenen Plattformen

Vergleich mit Native - Performance - prinzipiell vergleichbar - mehr Tuning-Möglichkeiten bei Native - Mehr Componenten/APIs bei Native - Näher an der Hardware - Dev-Tools (GUI-Builder)

Vergleich mit HTML5-Cross-Platform - unterstützte Plattformen - React-Native: Android + ios - Cordova: Android, ios, Windows Phone, BlackBerry, Symbian, - Performance - Look and Feel

Vergleich mit Browser-Single-Page-Apps - kein AppStore (Vorteil und Nachteil) - Auffindbar über Web - unterstützte Plattformen - Performance

- Play-Store - Code: https://github.com/facebook/react-native/tree/master /Examples/UIExplorer

Fragen? @manuel_mauky github.com/lestard www.lestard.eu