63
Présenta)on de la librairie et prototypage d'un jeu de type "clicker" Michaël Hoste [email protected] • @michaelhoste • github.com/michaelhoste

Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Présenta)ondelalibrairieetprototypaged'unjeudetype"clicker"

Michaë[email protected]•@michaelhoste•github.com/michaelhoste

Page 2: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

hDp://80limit.com

Page 3: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

hDp://crea)vemonkeys.eu

Page 4: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 5: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Backend(serveur)

Frontend(navigateurweb)

Page 6: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Une brève histoire du web

Page 7: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

1990

Page 8: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 9: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

~1998

Page 10: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

~2000

Page 11: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

2006

XMLHttpRequest

Contenu Style Interaction

DOM CSS JavaScript

Page 12: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

jQuery, frameworks et ReactJS

2006...Librairie

2010-...Frameworks

2013-...Librairie

Page 13: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

ReactJS

•  LibrairiepermeDantdecréerdesinterfacesu)lisateursdemanièredéclara)ve.

•  CrééetmaintenuprincipalementparFacebook.•  Open-Source(MIT).•  U)liséparFacebook(20000components),WhatsApp,Ne[lix,AirBnB,WordPress,etc.

Peutcohabiteravecd'autrestechnos!

Page 14: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

•  ES6vouspermeDrad'u)liserlesclasses!– SansES6=>React.createClass()

•  AnciennesMixinsplusvalables.

•  U)lisezuncompilateur(Babel)enaDendantlacompa)bilitétotaledesnavigateurs(bientôt!).

Note : Utilisez ES6

Page 15: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

ReactJS - Techniquement

1.Uneapprocheen"components".

2.Le"One-WayDataFlow".

3.Le"VirtualDOM".

4.UneAPI(environ10fonc)ons).

Page 16: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

1. Components

Page 17: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

«IlfauttoujoursséparerleHTML,leCSSetleJavaScriptdansuneapplica)onweb»

Page 18: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

«IlfauttoujoursséparerleHTML,leCSSetleJavaScriptdansuneapplica)onweb»

EnReactJS,uncomponentréunitleHTMLetle

JavaScriptauseind’unmêmefichier.

Page 19: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

«IlfauttoujoursséparerleHTML,leCSSetleJavaScriptdansuneapplica)onweb»

EnReactJS,uncomponentréunitleHTMLetle

JavaScriptauseind’unmêmefichier.

(etleCSS!?)

Page 20: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 21: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 22: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 23: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

JSX

Page 24: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

JSX

<label class="label" for="name">

<label className="label" htmlFor="name">

devient

Page 25: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

2. Le "One-Way Data Flow"

Page 26: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

ComparaisonjQuery,AngularJS,ReactJS

•  jQuery:–  EtatliéauDOM.–  hDps://jsfiddle.net/michaelhoste/5hp42rfg/

•  AngularJS:

–  Two-WayDataBinding–  hDps://jsfiddle.net/michaelhoste/jo33cqc0/

•  ReactJS:–  One-WayDataFlow–  hDps://jsfiddle.net/michaelhoste/oohj66p1/

Page 27: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

PROPS STATE

Immutables

Passés par le component parent

this.props

Component "stateless"

Mutables

Appartiennent au component

this.state

this.setState()

Component "stateful"

Page 28: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Quand le state d'un component change (via "setState"), le component et tous les sous-

components sont re-rendus.

Quand les props reçues par un component changent, le component et tous ses sous-

components sont re-rendus.

Page 29: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Les propriétés descendent, les actions remontent

Page 30: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

3. Virtual DOM

Page 31: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 32: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

L'API

Page 33: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Cycle de vie des components •  Mounting

–  constructor() –  componentWillMount() –  render() –  componentDidMount()

•  Updating –  componentWillReceiveProps() –  shouldComponentUpdate() –  componentWillUpdate() –  render() –  componentDidUpdate()

•  Unmounting –  componentWillUnmount()

Page 34: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 35: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

componentDidMount()

•  Exécuté une seule fois après le rendu du component.

•  Binder des éléments du DOM (jQuery).

•  Lancer des timers.

•  Requêtes Ajax.

Page 36: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

componentWillReceiveProps()

•  la méthode reçoit : – nextProps

•  Permet de de mettre à jour l'état du component en fonction des nouvelles props reçues (si nécessaire).

Page 37: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

shouldComponentUpdate() •  la méthode reçoit :

–  nextProps –  nextState

•  Permet de choisir si on veut mettre à jour le component en fonction du nouveau state ou des nouvelles props.

•  Retourner "false" permet d'ignorer la mise à jour.

•  Pratique si certains éléments du state ou des props n'agissent pas sur l'affichage.

•  Attendre phase d'optimisation !

Page 38: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

hDp://calendar.perfplanet.com/2013/diff/

Page 39: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

componentWillUpdate()

•  la méthode reçoit : – nextProps – nextState

•  Permet d'effectuer des actions juste avant l'affichage component en fonction du nouveau state ou des nouvelles props.

•  Pour les animations CSS, par exemple.

Page 40: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

componentDidUpdate()

•  la méthode reçoit : – prevProps – prevState

•  Requête AJAX si les props ont changé et le justifient.

•  Agir sur le DOM (jQuery).

Page 41: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

componentWillUnmount()

•  S'exécute lorsque le component est supprimé.

•  Permet d'arrêter des timers.

•  Permet de nettoyer le DOM si nécessaire.

Page 42: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 43: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Créer une application React

Page 44: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Installation

•  Template proposé par Facebook : –  https://github.com/facebook/create-react-app

•  Installer NodeJS

•  Executer : –  npx create-react-app mon-application –  yarn start

Page 45: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

•  Imagedeclickerheroes+demo

hDps://www.kongregate.com/games/playsaurus/clicker-heroes

Page 46: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 47: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

hDps://github.com/michaelhoste/clicker

Page 48: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

App

Page 49: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Money

Page 50: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Ideas

Page 51: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Upgrades

Page 52: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

SeDngs

Page 53: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Revenues

Page 54: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Upgrades

Page 55: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Upgrade

Page 56: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Démo

Page 57: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 58: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 59: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 60: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 61: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

ReactJS ReactNa)ve

Page 62: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu
Page 63: Présentaon de la librairie et prototypage d'un jeu de type ... · ReactJS • Librairie permeDant de créer des interfaces u)lisateurs de manière déclarave. • Créé et maintenu

Présenta)ondelalibrairieetprototypaged'unjeudetype"clicker"

Michaë[email protected]•@michaelhoste•github.com/michaelhoste

hDp://80limit.com/slides/jeudis.pdf