SlideShare uma empresa Scribd logo
1 de 19
Introduzione a
React Native
Fabrizio Bernabei
bernabei@gmail.com
@bernabei
Cross Platform... chi è costui?
• Sviluppo nativo (swift-xcode/kotlin-android studio)
+ performance
- linguaggi sviluppo ed ambienti diversi
• Sviluppo ibrido (ionic/cordova/phonegap)
Scrittura con tecnologie WEB (html + css + js) ed esecuzione in
webview all’interno di una app nativa
+ riutilizzo conoscenze web e stesso codice più piattaforme
- prestazioni limitate, specialmente UI (non nativa)
- in alcuni casi non possibile sfruttare completamente l’hw
• Sviluppo «ibrido nativo» (xamarin/react native/nativescript)
+ Stesso codice su più piattaforme
+ Output binari compilati in codice nativo (completament o in parte)
- ?
React Native… ma cos’è?
• Libreria open source per sviluppo di applicazioni
cross platform
• Rilasciata da Facebook durante il 2015
• Basata su React JS…
• Javascript (ES6+) - react
• È usata? Facebook, Instagram, Airbnb, Skype, ecc..
Cosa ha di diverso da altre soluzioni?
• Learn once, write anywhere (React)
• Compilazione UI nativa, no WebView!
Look & Feel ed esperienza d’uso OS
• Codice js sfrutta motore nativo OS su un thread
diverso da quello della UI- true multi-thread
• Integraione codice nativo per ulteriori performance
o funzioni con native modules
• Styling UI semplificata -> CSS FlexBox
Cosa serve?
• java SDK (JAVA_HOME + PATH)
node js
python 2.7.12 *
android studio
MAC e Xcode per iOS
• SETUP (installazione CLI)
npm install -g react-native-cli
• Hello Word da riga di comando (expo o ejected)
react-native init helloworld
react-native run-android
DEMO
https://github.com/bernabei/mokapp2017-react-native-demo
Come funziona React?
• UI=f(data)
• A JavaScript library for building user interfaces
• Component based
• Virtual DOM
• js + markup -> JSX
• props (immutabile), state (modificabile)
Hello World React JS?
class HelloWorld extends React.Component {
render() {
return (
<div>
Hello World!
</div>
);
}
}
Hello World React JS?
class HelloWorldApp extends Component {
render() {
return (
<Text>
Hello world!
</Text>
);
}
}
Componenti base?
• Lista completa: https://facebook.github.io/react-
native/docs/components-and-apis.html
Utilizzo dei componenti - Props
class Greeting extends Component {
render() {
return (
<Text>Hello {this.props.name}!</Text>
);
}
}
export default class LotsOfGreetings extends Component {
render() {
return (
<View style={{alignItems: 'center’}}>
<Greeting name='Rexxar’ />
<Greeting name='Jaina’ />
<Greeting name='Valeera’ />
</View>
);
}
}
Utilizzo dei componenti - State
class Blink extends Component {
constructor(props) {
super(props);
this.state = {showText: true};
// Toggle the state every second
setInterval(() => {
this.setState(previousState => {
return { showText: !previousState.showText };
});
}, 1000);
}
render() {
let display = this.state.showText ? this.props.text : ' ‘;
return (
<Text>{display}</Text>
);
}
}
…
Stilizzazione dei componenti
export default class LotsOfStyles extends Component {
render() {
return (
<View>
<Text style={styles.red}>just red</Text>
<Text style={styles.bigblue}>just bigblue</Text>
<Text style={[styles.bigblue, styles.red]}>
bigblue, then red</Text>
<Text style={[styles.red, styles.bigblue]}>
red, then bigblue</Text>
</View>
);
}
}
const styles = StyleSheet.create({
bigblue: {
color: 'blue’,
fontWeight: 'bold’,
fontSize: 30,
},
red: {
color: 'red’,
},
});
DEMO
https://github.com/bernabei/mokapp2017-react-native-demo
Ma non finisce qui…
• Utilizzo librerie javascript
• Utilizzo Redux/Flux
• Import moduli/component per piattaforma
nomefile.ios.js
nomefile.android.js
• Supporto ufficiale Microsoft per UWP
https://github.com/Microsoft/react-native-windows
• Community estesa e in continua espansione, come quella del
“fratello” React
Risorse
• https://facebook.github.io/react-native/
• https://reactjs.org/
• http://www.awesome-react-native.com/
• https://github.com/bernabei/mokapp2017-react-native-demo
• https://nativebase.io/
Essential cross-platform UI components for React Native
• http://getpepperoni.com/
A free and open-source blueprint to kickstart your mobile product
development for Android and iOS, powered by React Native.
GRAZIE!
Domande?

Mais conteúdo relacionado

Semelhante a Introduzione a React Native - Mokapp 2017

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinFabio Cozzolino
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDiego Giorgini
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Railsguestfe3e15
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatoreSMAU
 
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8Wellnet srl
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8DrupalDay
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS DevicesAndrea Picchi
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerMatteo Magni
 
Novità in Visual Studio 2012
Novità in Visual Studio 2012Novità in Visual Studio 2012
Novità in Visual Studio 2012Sinergia Totale
 
Ionic Cordova vs React Native
Ionic Cordova vs React NativeIonic Cordova vs React Native
Ionic Cordova vs React NativeAntonio Gallo
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...DrupalDay
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Luca Zulian
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davveroKlab
 

Semelhante a Introduzione a React Native - Mokapp 2017 (20)

Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Sviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarinSviluppo apps multipiattaforma con visual studio e xamarin
Sviluppo apps multipiattaforma con visual studio e xamarin
 
Xamarin
XamarinXamarin
Xamarin
 
Dal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie GoogleDal cloud al mobile con tecnologie Google
Dal cloud al mobile con tecnologie Google
 
Dominopoint meet the experts 2015 - XPages
Dominopoint   meet the experts 2015 - XPagesDominopoint   meet the experts 2015 - XPages
Dominopoint meet the experts 2015 - XPages
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Smau milano 2012 arena social media davide-senatore
Smau milano 2012   arena social media davide-senatoreSmau milano 2012   arena social media davide-senatore
Smau milano 2012 arena social media davide-senatore
 
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
[Luca Cracco] - DevOps: strumenti di automazione per Drupal8
 
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8[drupalday2017] - DevOps: strumenti di automazione per Drupal8
[drupalday2017] - DevOps: strumenti di automazione per Drupal8
 
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
Corso WebApp iOS - Lezione 06:   Web Development for iOS DevicesCorso WebApp iOS - Lezione 06:   Web Development for iOS Devices
Corso WebApp iOS - Lezione 06: Web Development for iOS Devices
 
Php for ASP.NET Developers
Php for ASP.NET DevelopersPhp for ASP.NET Developers
Php for ASP.NET Developers
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Javascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesignerJavascript - 1 | WebMaster & WebDesigner
Javascript - 1 | WebMaster & WebDesigner
 
Novità in Visual Studio 2012
Novità in Visual Studio 2012Novità in Visual Studio 2012
Novità in Visual Studio 2012
 
Ionic Cordova vs React Native
Ionic Cordova vs React NativeIonic Cordova vs React Native
Ionic Cordova vs React Native
 
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
Drupal Day 2012 - Applicazioni mobile multipiattaforma integrate con Drupal 7...
 
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
Costruire applicazioni-cross-platform-con-xamarin-visual-studio-2013
 
Html5
Html5Html5
Html5
 
Universal app ma universal per davvero
Universal app ma universal per davveroUniversal app ma universal per davvero
Universal app ma universal per davvero
 

Mais de Fabrizio Bernabei

.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018Fabrizio Bernabei
 
Tutti pronti per Windows 10?
Tutti pronti per Windows 10?Tutti pronti per Windows 10?
Tutti pronti per Windows 10?Fabrizio Bernabei
 
Mokapp2014 Lab Universal App
Mokapp2014 Lab Universal AppMokapp2014 Lab Universal App
Mokapp2014 Lab Universal AppFabrizio Bernabei
 
mokapp - Applicazioni fotografiche con Windows Phone 8
mokapp - Applicazioni fotografiche con Windows Phone 8mokapp - Applicazioni fotografiche con Windows Phone 8
mokapp - Applicazioni fotografiche con Windows Phone 8Fabrizio Bernabei
 
ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008Fabrizio Bernabei
 
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbriaRoadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbriaFabrizio Bernabei
 
MS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCFMS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCFFabrizio Bernabei
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 

Mais de Fabrizio Bernabei (12)

Sviluppare SPA con Vue
Sviluppare SPA con VueSviluppare SPA con Vue
Sviluppare SPA con Vue
 
Sviluppare SPA con Vue.js
Sviluppare SPA con Vue.jsSviluppare SPA con Vue.js
Sviluppare SPA con Vue.js
 
.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Dnu2015
Dnu2015Dnu2015
Dnu2015
 
Tutti pronti per Windows 10?
Tutti pronti per Windows 10?Tutti pronti per Windows 10?
Tutti pronti per Windows 10?
 
Mokapp2014 Lab Universal App
Mokapp2014 Lab Universal AppMokapp2014 Lab Universal App
Mokapp2014 Lab Universal App
 
mokapp - Applicazioni fotografiche con Windows Phone 8
mokapp - Applicazioni fotografiche con Windows Phone 8mokapp - Applicazioni fotografiche con Windows Phone 8
mokapp - Applicazioni fotografiche con Windows Phone 8
 
ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008ASP.NET Ajax Community Launch VS2008
ASP.NET Ajax Community Launch VS2008
 
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbriaRoadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
Roadmap pubblicazione app WP7 - Community Tour 2011 DotNetUmbria
 
MS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCFMS Days 08 Applicazioni RIA con Silverlight 2 e WCF
MS Days 08 Applicazioni RIA con Silverlight 2 e WCF
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 

Introduzione a React Native - Mokapp 2017

  • 1.
  • 4. Cross Platform... chi è costui? • Sviluppo nativo (swift-xcode/kotlin-android studio) + performance - linguaggi sviluppo ed ambienti diversi • Sviluppo ibrido (ionic/cordova/phonegap) Scrittura con tecnologie WEB (html + css + js) ed esecuzione in webview all’interno di una app nativa + riutilizzo conoscenze web e stesso codice più piattaforme - prestazioni limitate, specialmente UI (non nativa) - in alcuni casi non possibile sfruttare completamente l’hw • Sviluppo «ibrido nativo» (xamarin/react native/nativescript) + Stesso codice su più piattaforme + Output binari compilati in codice nativo (completament o in parte) - ?
  • 5. React Native… ma cos’è? • Libreria open source per sviluppo di applicazioni cross platform • Rilasciata da Facebook durante il 2015 • Basata su React JS… • Javascript (ES6+) - react • È usata? Facebook, Instagram, Airbnb, Skype, ecc..
  • 6. Cosa ha di diverso da altre soluzioni? • Learn once, write anywhere (React) • Compilazione UI nativa, no WebView! Look & Feel ed esperienza d’uso OS • Codice js sfrutta motore nativo OS su un thread diverso da quello della UI- true multi-thread • Integraione codice nativo per ulteriori performance o funzioni con native modules • Styling UI semplificata -> CSS FlexBox
  • 7. Cosa serve? • java SDK (JAVA_HOME + PATH) node js python 2.7.12 * android studio MAC e Xcode per iOS • SETUP (installazione CLI) npm install -g react-native-cli • Hello Word da riga di comando (expo o ejected) react-native init helloworld react-native run-android
  • 9. Come funziona React? • UI=f(data) • A JavaScript library for building user interfaces • Component based • Virtual DOM • js + markup -> JSX • props (immutabile), state (modificabile)
  • 10. Hello World React JS? class HelloWorld extends React.Component { render() { return ( <div> Hello World! </div> ); } }
  • 11. Hello World React JS? class HelloWorldApp extends Component { render() { return ( <Text> Hello world! </Text> ); } }
  • 12. Componenti base? • Lista completa: https://facebook.github.io/react- native/docs/components-and-apis.html
  • 13. Utilizzo dei componenti - Props class Greeting extends Component { render() { return ( <Text>Hello {this.props.name}!</Text> ); } } export default class LotsOfGreetings extends Component { render() { return ( <View style={{alignItems: 'center’}}> <Greeting name='Rexxar’ /> <Greeting name='Jaina’ /> <Greeting name='Valeera’ /> </View> ); } }
  • 14. Utilizzo dei componenti - State class Blink extends Component { constructor(props) { super(props); this.state = {showText: true}; // Toggle the state every second setInterval(() => { this.setState(previousState => { return { showText: !previousState.showText }; }); }, 1000); } render() { let display = this.state.showText ? this.props.text : ' ‘; return ( <Text>{display}</Text> ); } } …
  • 15. Stilizzazione dei componenti export default class LotsOfStyles extends Component { render() { return ( <View> <Text style={styles.red}>just red</Text> <Text style={styles.bigblue}>just bigblue</Text> <Text style={[styles.bigblue, styles.red]}> bigblue, then red</Text> <Text style={[styles.red, styles.bigblue]}> red, then bigblue</Text> </View> ); } } const styles = StyleSheet.create({ bigblue: { color: 'blue’, fontWeight: 'bold’, fontSize: 30, }, red: { color: 'red’, }, });
  • 17. Ma non finisce qui… • Utilizzo librerie javascript • Utilizzo Redux/Flux • Import moduli/component per piattaforma nomefile.ios.js nomefile.android.js • Supporto ufficiale Microsoft per UWP https://github.com/Microsoft/react-native-windows • Community estesa e in continua espansione, come quella del “fratello” React
  • 18. Risorse • https://facebook.github.io/react-native/ • https://reactjs.org/ • http://www.awesome-react-native.com/ • https://github.com/bernabei/mokapp2017-react-native-demo • https://nativebase.io/ Essential cross-platform UI components for React Native • http://getpepperoni.com/ A free and open-source blueprint to kickstart your mobile product development for Android and iOS, powered by React Native.