SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
J’ai fait une application native avec React
Native
CocoaHeads Paris Octobre 2016
Danielo JEAN-LOUIS
Développeur Front-end chez DigitasLBi France
React Native
par facebook
Pourquoi React Native ?
- La mise en page sur mobile peut devenir
(rapidement) difficile et problématique
Sources
https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
- La mise en page sur mobile peut devenir
(rapidement) difficile et problématique
- Faible productivité des développeurs mobile
chez facebook (notamment lié à la compilation)
Sources
https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
Pourquoi React Native ?
Pourquoi React Native ?
- La mise en page sur mobile peut devenir
(rapidement) difficile et problématique
- Faible productivité des développeurs mobile
chez facebook (notamment lié à la compilation)
facebook avait besoin, pour du développement natif, de la vitesse de
développement web
Sources
https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
Qu’est-ce que React Native ?
Ça ne fait pas une web app
Ça ne fait pas une application hybride
Sources
https://facebook.github.io/react-native/
https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
Qu’est-ce que React Native ?
Ça ne fait pas une web app
Ça ne fait pas une application hybride
Ça fait une application native
Sources
https://facebook.github.io/react-native/
https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
Qu’est-ce que React Native ?
Ça ne fait pas une web app
Ça ne fait pas une application hybride
Ça fait une application native
React native utilise le javascript pour la logique et le natif
pour l’interface utilisateur
C’est ReactJS appliqué pour faire une application native
Sources
https://facebook.github.io/react-native/
https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
Pour information, ReactJS, c’est :
- Une bibliothèque javascript créée et maintenue par facebook
- ReactJS est disponible depuis 2013
- ReactJS possède 49 050 étoiles sur github (Swift n’a “que”
33 000 étoiles)
React Native permet d’utiliser tout ce que
vous avez appris avec React pour le web,
pour créer une application native pour iOS,
MacOS*, Android et Windows (UWP)*
Sources
https://github.com/ReactWindows/react-native-windows
https://github.com/ptmt/react-native-macos
Learn-once write-anywhere
Le javascript, c’est cool maintenant
- Possibilité de créer de vraies classes
- Le spread opérateur
- Possibilité de scoper les variables (mot-clé let)
- Et plein d’autres choses
Le javascript, c’est cool maintenant
- Possibilité de créer de vraies classes
- Le spread opérateur
- Possibilité de scoper les variables (mot-clé let)
- Et plein d’autres choses
- Et entre-nous, Swift copie un peu l’ecmascript
Que fait React-native ?
- Expose les API Native pour y accéder en javascript
- Par exemple :
	 UIScrollView (iOS) / ScrollView (Android) -> ScrollView (RN)
	 UITableView (iOS) / ListView (Android) -> ListView (RN)
	 UIView (iOS) / View (Android) -> View (RN)
	...
Concurrents de React Native
React native
JS
Oui
React
Oui
Oui
Non
Oui
Langage
Multiple
déploiement
Moteur de
template
Déployable
sur le web
Bridge natif
Utilise une
webview
Mise en page
facile*
NativeScript
JS
Oui
Angular
Oui
Oui
Non
Oui
PhoneGap
HTML/CSS/JS
Oui
Au choix
Oui
Non
Oui
Oui
ionic
HTML/CSS/JS
Oui
Angular
Oui
Non
Oui
Oui
Xamarin
C#
Non
Au choix
Non
Oui
Non
Non
Natif
Obj-C/Swift/
Java
Non
Au choix
Non
Oui
Oui
Non
* Appréciation de l’auteur
Pré-requis
Node js (brew install node)
Watchman (brew install watchman)
react-native-cli (npm install -g react-native-cli)
Sources
https://facebook.github.io/react-native/docs/getting-started.html
Pré-requis
Node js (brew install node)
Watchman (brew install watchman)
react-native-cli (npm install -g react-native-cli)
Ouvrir la console et entrer :
react-native init myProject
cd myProject
react-native run-ios / run-android
Sources
https://facebook.github.io/react-native/docs/getting-started.html
Exemple de projet
index.android.js : Point d’entée Android
index.ios.js : Point d’entée iOS
/ios/ : Un projet xcode
/android/ : Un projet android
package.json : un fichier de dépendances
(comme .podspec/composer.json)
L’application a un point d’entrée propre à l’OS de
destination. Il est possible de faire de même avec des
composants en les suffixant leur fichier par android.js
ou ios.js
Sources
https://facebook.github.io/react-native/docs/platform-specific-code.html
React Native pense composant (comme ReactJS)
React gère uniquement la vue
React ne fournit pas de contrôleur
React ne fournit pas d’écouteur global ou de système de délégation
Le flux de données se veut unidirectionnel. Seul le parent
communique avec son enfant et vice-versa
React, c’est simplement des composants, ils sont le coeur de sa
philosophie
	 Avantages :
		- Réutilisables
		- Testables
		- Maintenables
Les composants sont partout
Pokedex (ListView)
Les composants sont partout
Pokedex (ListView)
PokedexItem (View)
Les composants sont partout
Pokedex (ListView)
PokedexItem (View)
Image (Fourni par RN)
Les composants sont partout
Pokedex (ListView)
PokedexItem (View)
Image (Fourni par RN)
Text (Fourni par RN)
Premier problème des développeurs mobile
de facebook :
Mise en page sur une application native
Flexbox à la rescousse
- React Native se base sur la mise en page flexbox de HTML5 (dans
une version simplifiée)
- React Native utilise le même principe de mise en page de HTML (les
éléments sont empliés par défaut)
- Beaucoup plus simple qu’autolayout / Interface builder /
NSLayoutConstraint
<View>
	 <Text>My text</Text>
</View>
(oui mon texte fait entièrement la largeur de mon conteneur, et ce, sans code supplémentaire. Je rajoute juste flex:1 et je remplis la hauteur)
Sources
https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Deuxième problème des développeurs mobile
de facebook :
Le temps de compilation
Hot reload à la rescousse
Sources
https://facebook.github.io/react-native/blog/2016/03/24/introducing-hot-reloading.html#implementation-in-a-nutshell
https://facebook.github.io/watchman/
Utilisation du Hot Module Replacement (HMR) de Webpack couplé à
watchman pour recharger l’application
Permet le live reload
Sources
https://github.com/DanYellow/ReactNativePokedex/tree/master
Deux façons de communiquer avec le natif
Native Modules : Permet d’accéder aux API native ou une vue
native qui n’a pas besoin d’être consciente de React.
ex : EventKit ou UNNotificationRequest
Native UI Components : Permet de définir une vue native en tant
que composant React
Logs / Debug
- L’application console de MacOS
- La commande : react-native log-ios / log-android
- La console de Xcode / Android studio
- L’application elle-même (nécessite un debug scheme)
- La console du navigateur Chrome
Sources
https://facebook.github.io/react-native/docs/debugging.html
Démo
Mon avis sur React Native
- Superbe transfomation de ReactJS pour l’environnement mobile
- Excellente option pour du prototypage
- Plaisir de développement ; facebook a développé un outil de qualité
- Peut s’avérer inutile si on ne vise qu’iOS et qu’on connait
ComponentKit
- Nécessité d’utiliser des plugins pour des fonctionnalités basiques
(orientation de l’appareil, version du système)
- Enfin possible de faire de la mise en page sur mobile facilement
Merci
Questions ?
For further
https://github.com/jondot/awesome-react-native
http://browniefed.com/blog/react-native-layout-examples/
https://js.coach/react-native
https://rnplay.org/
https://github.com/facebook/react-native/tree/master/Examples/

Weitere ähnliche Inhalte

Was ist angesagt?

PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementNassim Bahri
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - CorrectionLilia Sfaxi
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
Conception et développement d'une application Android pour TUNISAIR
Conception et développement d'une application Android pour TUNISAIRConception et développement d'une application Android pour TUNISAIR
Conception et développement d'une application Android pour TUNISAIRSkander Driss
 
Rapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelRapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelBelwafi Bilel
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
 
Conception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTSConception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTSFaissoilMkavavo
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 
Rapport PFE Développent d'une application bancaire mobile
Rapport PFE Développent d'une application bancaire mobileRapport PFE Développent d'une application bancaire mobile
Rapport PFE Développent d'une application bancaire mobileNader Somrani
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineMohamed Amine Mahmoudi
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking Khaled Fayala
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile Raoua Bennasr
 
Gestion d’une agence de voyage routière (Blondel Seumo)
Gestion d’une  agence  de  voyage  routière (Blondel Seumo)Gestion d’une  agence  de  voyage  routière (Blondel Seumo)
Gestion d’une agence de voyage routière (Blondel Seumo)Gantner Technologies
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcabderrahim marzouk
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebHarrathi Mohamed
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Ahmed Makni
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsMohamed Ayoub OUERTATANI
 

Was ist angesagt? (20)

PFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignementPFE :: Application de gestion des dus d'enseignement
PFE :: Application de gestion des dus d'enseignement
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Conception et développement d'une application Android pour TUNISAIR
Conception et développement d'une application Android pour TUNISAIRConception et développement d'une application Android pour TUNISAIR
Conception et développement d'une application Android pour TUNISAIR
 
Rapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelRapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilel
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...
 
Conception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTSConception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTS
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 
Rapport PFE Développent d'une application bancaire mobile
Rapport PFE Développent d'une application bancaire mobileRapport PFE Développent d'une application bancaire mobile
Rapport PFE Développent d'une application bancaire mobile
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking
 
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
Rapport pfe Conceptionet Developpement d'une Application web et  Mobile Rapport pfe Conceptionet Developpement d'une Application web et  Mobile
Rapport pfe Conceptionet Developpement d'une Application web et Mobile
 
Gestion d’une agence de voyage routière (Blondel Seumo)
Gestion d’une  agence  de  voyage  routière (Blondel Seumo)Gestion d’une  agence  de  voyage  routière (Blondel Seumo)
Gestion d’une agence de voyage routière (Blondel Seumo)
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvc
 
Ma présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site WebMa présentation PFE : Application Android & Site Web
Ma présentation PFE : Application Android & Site Web
 
Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...Pfe conception et réalisation d'une application de gestion des processus d'ac...
Pfe conception et réalisation d'une application de gestion des processus d'ac...
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clients
 

Andere mochten auch

Andere mochten auch (20)

Rebranding an ios application
Rebranding an ios applicationRebranding an ios application
Rebranding an ios application
 
Introduction to WebRTC on iOS
Introduction to WebRTC on iOSIntroduction to WebRTC on iOS
Introduction to WebRTC on iOS
 
Safari app extensions cleared up by Sanaa Squalli
Safari app extensions cleared up by Sanaa SqualliSafari app extensions cleared up by Sanaa Squalli
Safari app extensions cleared up by Sanaa Squalli
 
Firebase par nicolas lehovetzki
Firebase par nicolas lehovetzkiFirebase par nicolas lehovetzki
Firebase par nicolas lehovetzki
 
Un retour d'expérience sur Apple Pay
Un retour d'expérience sur Apple PayUn retour d'expérience sur Apple Pay
Un retour d'expérience sur Apple Pay
 
Tout savoir pour devenir Freelance
Tout savoir pour devenir FreelanceTout savoir pour devenir Freelance
Tout savoir pour devenir Freelance
 
Super combinators
Super combinatorsSuper combinators
Super combinators
 
Monads in Swift
Monads in SwiftMonads in Swift
Monads in Swift
 
Découvrir dtrace en ligne de commande.
Découvrir dtrace en ligne de commande.Découvrir dtrace en ligne de commande.
Découvrir dtrace en ligne de commande.
 
CONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANECONTINUOUS DELIVERY WITH FASTLANE
CONTINUOUS DELIVERY WITH FASTLANE
 
Programme MFI retour d'expérience
Programme MFI retour d'expérienceProgramme MFI retour d'expérience
Programme MFI retour d'expérience
 
How to communicate with Smart things?
How to communicate with Smart things?How to communicate with Smart things?
How to communicate with Smart things?
 
Handle the error
Handle the errorHandle the error
Handle the error
 
SwiftyGPIO
SwiftyGPIOSwiftyGPIO
SwiftyGPIO
 
What's new in iOS9
What's new in iOS9What's new in iOS9
What's new in iOS9
 
Présentation de HomeKit
Présentation de HomeKitPrésentation de HomeKit
Présentation de HomeKit
 
Alamofire
AlamofireAlamofire
Alamofire
 
MVC-RS par Grégoire Lhotelier
MVC-RS par Grégoire LhotelierMVC-RS par Grégoire Lhotelier
MVC-RS par Grégoire Lhotelier
 
Chainable datasource
Chainable datasourceChainable datasource
Chainable datasource
 
Design like a developer
Design like a developerDesign like a developer
Design like a developer
 

Ähnlich wie J'ai fait une app native en React Native

JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !Rossi Oddet
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 
Présentation GWT au JUG Montréal 14 avril 2011
Présentation GWT au JUG Montréal 14 avril 2011Présentation GWT au JUG Montréal 14 avril 2011
Présentation GWT au JUG Montréal 14 avril 2011Claude Coulombe
 
Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011Montreal JUG
 
Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5wyggio
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !matparisot
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Mathieu Parisot
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphipprem
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3Benoit Fillon
 
Construire une PWA connectée à WordPress
Construire une PWA connectée à WordPressConstruire une PWA connectée à WordPress
Construire une PWA connectée à WordPressBenjamin LUPU
 
Le développement mobile multiplateforme avec cordova
Le développement mobile multiplateforme avec cordovaLe développement mobile multiplateforme avec cordova
Le développement mobile multiplateforme avec cordovaSébastien Ollivier
 
JavaScript Open Day - Migration Web To App
JavaScript Open Day - Migration Web To AppJavaScript Open Day - Migration Web To App
JavaScript Open Day - Migration Web To AppSébastien Ollivier
 
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKitConstruire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKituncatcrea
 
Webdesign sites web et mobiles-tendances 2015
Webdesign sites web et mobiles-tendances 2015Webdesign sites web et mobiles-tendances 2015
Webdesign sites web et mobiles-tendances 2015Olivier Dommange
 
Demarrer ionic en 5 etape
Demarrer ionic en 5 etapeDemarrer ionic en 5 etape
Demarrer ionic en 5 etapeZaïd BOUDAMOUZ
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPatelier111
 

Ähnlich wie J'ai fait une app native en React Native (20)

React xp
React xpReact xp
React xp
 
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
JCertif Tunisie 2015 - Le Web sur Mobile, Faisons le point !
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Présentation GWT au JUG Montréal 14 avril 2011
Présentation GWT au JUG Montréal 14 avril 2011Présentation GWT au JUG Montréal 14 avril 2011
Présentation GWT au JUG Montréal 14 avril 2011
 
Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011Gwt présentation-jug-14avr2011
Gwt présentation-jug-14avr2011
 
Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5Wygday 2011 - Introduction à HTML5
Wygday 2011 - Introduction à HTML5
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
20180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.320180628 skill value_masterclass_reactnative - v1.3
20180628 skill value_masterclass_reactnative - v1.3
 
Construire une PWA connectée à WordPress
Construire une PWA connectée à WordPressConstruire une PWA connectée à WordPress
Construire une PWA connectée à WordPress
 
Le développement mobile multiplateforme avec cordova
Le développement mobile multiplateforme avec cordovaLe développement mobile multiplateforme avec cordova
Le développement mobile multiplateforme avec cordova
 
JavaScript Open Day - Migration Web To App
JavaScript Open Day - Migration Web To AppJavaScript Open Day - Migration Web To App
JavaScript Open Day - Migration Web To App
 
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKitConstruire une Application Mobile en 30 minutes avec le plugin WP-AppKit
Construire une Application Mobile en 30 minutes avec le plugin WP-AppKit
 
Webdesign sites web et mobiles-tendances 2015
Webdesign sites web et mobiles-tendances 2015Webdesign sites web et mobiles-tendances 2015
Webdesign sites web et mobiles-tendances 2015
 
Native script
Native scriptNative script
Native script
 
Demarrer ionic en 5 etape
Demarrer ionic en 5 etapeDemarrer ionic en 5 etape
Demarrer ionic en 5 etape
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 

Mehr von CocoaHeads France

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer FutureCocoaHeads France
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11CocoaHeads France
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeadsCocoaHeads France
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notificationsCocoaHeads France
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec BitriseCocoaHeads France
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPodsCocoaHeads France
 
Comment faire de HLS votre solution vidéo préférée ?
Comment faire de HLS votre solution vidéo préférée ?Comment faire de HLS votre solution vidéo préférée ?
Comment faire de HLS votre solution vidéo préférée ?CocoaHeads France
 

Mehr von CocoaHeads France (15)

Mutation testing for a safer Future
Mutation testing for a safer FutureMutation testing for a safer Future
Mutation testing for a safer Future
 
iOS App Group for Debugging
iOS App Group for DebuggingiOS App Group for Debugging
iOS App Group for Debugging
 
Asynchronous swift
Asynchronous swiftAsynchronous swift
Asynchronous swift
 
Visual accessibility in iOS11
Visual accessibility in iOS11Visual accessibility in iOS11
Visual accessibility in iOS11
 
My script - One year of CocoaHeads
My script - One year of CocoaHeadsMy script - One year of CocoaHeads
My script - One year of CocoaHeads
 
Ui testing dealing with push notifications
Ui testing dealing with push notificationsUi testing dealing with push notifications
Ui testing dealing with push notifications
 
L'intégration continue avec Bitrise
L'intégration continue avec BitriseL'intégration continue avec Bitrise
L'intégration continue avec Bitrise
 
Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3Quoi de neuf dans iOS 10.3
Quoi de neuf dans iOS 10.3
 
IoT Best practices
 IoT Best practices IoT Best practices
IoT Best practices
 
Build a lego app with CocoaPods
Build a lego app with CocoaPodsBuild a lego app with CocoaPods
Build a lego app with CocoaPods
 
Let's migrate to Swift 3.0
Let's migrate to Swift 3.0Let's migrate to Swift 3.0
Let's migrate to Swift 3.0
 
Project Entourage
Project EntourageProject Entourage
Project Entourage
 
BitTorrent on iOS
BitTorrent on iOSBitTorrent on iOS
BitTorrent on iOS
 
CloudKit as a backend
CloudKit as a backendCloudKit as a backend
CloudKit as a backend
 
Comment faire de HLS votre solution vidéo préférée ?
Comment faire de HLS votre solution vidéo préférée ?Comment faire de HLS votre solution vidéo préférée ?
Comment faire de HLS votre solution vidéo préférée ?
 

J'ai fait une app native en React Native

  • 1. J’ai fait une application native avec React Native CocoaHeads Paris Octobre 2016
  • 4. Pourquoi React Native ? - La mise en page sur mobile peut devenir (rapidement) difficile et problématique Sources https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  • 5. - La mise en page sur mobile peut devenir (rapidement) difficile et problématique - Faible productivité des développeurs mobile chez facebook (notamment lié à la compilation) Sources https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/ Pourquoi React Native ?
  • 6. Pourquoi React Native ? - La mise en page sur mobile peut devenir (rapidement) difficile et problématique - Faible productivité des développeurs mobile chez facebook (notamment lié à la compilation) facebook avait besoin, pour du développement natif, de la vitesse de développement web Sources https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  • 7. Qu’est-ce que React Native ? Ça ne fait pas une web app Ça ne fait pas une application hybride Sources https://facebook.github.io/react-native/ https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  • 8. Qu’est-ce que React Native ? Ça ne fait pas une web app Ça ne fait pas une application hybride Ça fait une application native Sources https://facebook.github.io/react-native/ https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  • 9. Qu’est-ce que React Native ? Ça ne fait pas une web app Ça ne fait pas une application hybride Ça fait une application native React native utilise le javascript pour la logique et le natif pour l’interface utilisateur C’est ReactJS appliqué pour faire une application native Sources https://facebook.github.io/react-native/ https://code.facebook.com/posts/1014532261909640/react-native-bringing-modern-web-techniques-to-mobile/
  • 10. Pour information, ReactJS, c’est : - Une bibliothèque javascript créée et maintenue par facebook - ReactJS est disponible depuis 2013 - ReactJS possède 49 050 étoiles sur github (Swift n’a “que” 33 000 étoiles)
  • 11. React Native permet d’utiliser tout ce que vous avez appris avec React pour le web, pour créer une application native pour iOS, MacOS*, Android et Windows (UWP)* Sources https://github.com/ReactWindows/react-native-windows https://github.com/ptmt/react-native-macos
  • 13. Le javascript, c’est cool maintenant - Possibilité de créer de vraies classes - Le spread opérateur - Possibilité de scoper les variables (mot-clé let) - Et plein d’autres choses
  • 14. Le javascript, c’est cool maintenant - Possibilité de créer de vraies classes - Le spread opérateur - Possibilité de scoper les variables (mot-clé let) - Et plein d’autres choses - Et entre-nous, Swift copie un peu l’ecmascript
  • 15. Que fait React-native ? - Expose les API Native pour y accéder en javascript - Par exemple : UIScrollView (iOS) / ScrollView (Android) -> ScrollView (RN) UITableView (iOS) / ListView (Android) -> ListView (RN) UIView (iOS) / View (Android) -> View (RN) ...
  • 16. Concurrents de React Native React native JS Oui React Oui Oui Non Oui Langage Multiple déploiement Moteur de template Déployable sur le web Bridge natif Utilise une webview Mise en page facile* NativeScript JS Oui Angular Oui Oui Non Oui PhoneGap HTML/CSS/JS Oui Au choix Oui Non Oui Oui ionic HTML/CSS/JS Oui Angular Oui Non Oui Oui Xamarin C# Non Au choix Non Oui Non Non Natif Obj-C/Swift/ Java Non Au choix Non Oui Oui Non * Appréciation de l’auteur
  • 17. Pré-requis Node js (brew install node) Watchman (brew install watchman) react-native-cli (npm install -g react-native-cli) Sources https://facebook.github.io/react-native/docs/getting-started.html
  • 18. Pré-requis Node js (brew install node) Watchman (brew install watchman) react-native-cli (npm install -g react-native-cli) Ouvrir la console et entrer : react-native init myProject cd myProject react-native run-ios / run-android Sources https://facebook.github.io/react-native/docs/getting-started.html
  • 19. Exemple de projet index.android.js : Point d’entée Android index.ios.js : Point d’entée iOS /ios/ : Un projet xcode /android/ : Un projet android package.json : un fichier de dépendances (comme .podspec/composer.json) L’application a un point d’entrée propre à l’OS de destination. Il est possible de faire de même avec des composants en les suffixant leur fichier par android.js ou ios.js Sources https://facebook.github.io/react-native/docs/platform-specific-code.html
  • 20. React Native pense composant (comme ReactJS) React gère uniquement la vue React ne fournit pas de contrôleur React ne fournit pas d’écouteur global ou de système de délégation Le flux de données se veut unidirectionnel. Seul le parent communique avec son enfant et vice-versa React, c’est simplement des composants, ils sont le coeur de sa philosophie Avantages : - Réutilisables - Testables - Maintenables
  • 21. Les composants sont partout Pokedex (ListView)
  • 22. Les composants sont partout Pokedex (ListView) PokedexItem (View)
  • 23. Les composants sont partout Pokedex (ListView) PokedexItem (View) Image (Fourni par RN)
  • 24. Les composants sont partout Pokedex (ListView) PokedexItem (View) Image (Fourni par RN) Text (Fourni par RN)
  • 25. Premier problème des développeurs mobile de facebook : Mise en page sur une application native
  • 26. Flexbox à la rescousse - React Native se base sur la mise en page flexbox de HTML5 (dans une version simplifiée) - React Native utilise le même principe de mise en page de HTML (les éléments sont empliés par défaut) - Beaucoup plus simple qu’autolayout / Interface builder / NSLayoutConstraint <View> <Text>My text</Text> </View> (oui mon texte fait entièrement la largeur de mon conteneur, et ce, sans code supplémentaire. Je rajoute juste flex:1 et je remplis la hauteur) Sources https://css-tricks.com/snippets/css/a-guide-to-flexbox/
  • 27. Deuxième problème des développeurs mobile de facebook : Le temps de compilation
  • 28. Hot reload à la rescousse Sources https://facebook.github.io/react-native/blog/2016/03/24/introducing-hot-reloading.html#implementation-in-a-nutshell https://facebook.github.io/watchman/ Utilisation du Hot Module Replacement (HMR) de Webpack couplé à watchman pour recharger l’application Permet le live reload
  • 29. Sources https://github.com/DanYellow/ReactNativePokedex/tree/master Deux façons de communiquer avec le natif Native Modules : Permet d’accéder aux API native ou une vue native qui n’a pas besoin d’être consciente de React. ex : EventKit ou UNNotificationRequest Native UI Components : Permet de définir une vue native en tant que composant React
  • 30. Logs / Debug - L’application console de MacOS - La commande : react-native log-ios / log-android - La console de Xcode / Android studio - L’application elle-même (nécessite un debug scheme) - La console du navigateur Chrome Sources https://facebook.github.io/react-native/docs/debugging.html
  • 31. Démo
  • 32. Mon avis sur React Native - Superbe transfomation de ReactJS pour l’environnement mobile - Excellente option pour du prototypage - Plaisir de développement ; facebook a développé un outil de qualité - Peut s’avérer inutile si on ne vise qu’iOS et qu’on connait ComponentKit - Nécessité d’utiliser des plugins pour des fonctionnalités basiques (orientation de l’appareil, version du système) - Enfin possible de faire de la mise en page sur mobile facilement