Skip to content

Instantly share code, notes, and snippets.

@pierr
Last active August 29, 2015 14:24
Show Gist options
  • Save pierr/639b994534924c75f7e6 to your computer and use it in GitHub Desktop.
Save pierr/639b994534924c75f7e6 to your computer and use it in GitHub Desktop.
React Europe conference

Keynote

Le keynote est présenté par @vjeux, qui travaille chez Facebook. Il insiste sur le fait que React a pour but de se concentrer sur le V de MVC. Il explique que React est construit autour de deux principe:

  • Avoir la meilleure expérience utilisateur UX
  • Avoir la meilleure expérience pour le développeur DX

Il a ensuite donné la vision de React, les sujets importants:

  • Le routing avec React Routeur
  • Comment traiter la préoblématique des requêtes entre le client et le serveur avec GraphQL
  • Les outils de dev : webpack pour le déploiement babel
  • La mobilité avec React Native

Il a remercié l'ensemble de la communauté pour l'adoption de React

Style inline

Le second talk était à propos de comment faire les styles pour les composants. Pour faire simple:

  • Le CSS n'est pas le style, le style peut être fait avec le CSS
  • Les composants doivent être réutilisable, le problème c'est que dans les composants actuels: HTML + JS => Comportement et HTML + CSS => présentation
  • On se retrouve avec beaucoup de classes CSS qui servent à décrire le comportement (.is-open, ...)
  • Le principal problème c'est que le composant n'est pas fonctionnel sans sa feuille de style, et que l'on se retrouve à mettre beaucoup de code pour gérer le comportement du css dans le composant.
  • Il faut donc faire porter le style lié au comportement par le compsant pour que ce dernier s'occupe de toute l'interface, ensuite il y a deux options: le css pour gérer l'apparance, ou carrément tout le css dans le composant
  • React permet de gérer tout le css d'un composant via la propriété style
  • Cette présentation était très intéressante

Flux over the Wire

Flux est un pattern permettant d'architecturer correctement une application JS. Le présentateur de ce talk, qui réalise les sites jeuxvideo.com et millenium.org nous a présenté son architecture pour faire du flux côté serveur. Il est confronté à des problématiques de temps rééel pour les chats et de minimisation du traffic. A delà qu'il fasse une utilisation massive du web-socket, il a présenté comment il gérer la couche de communication entre le client et le serveur.

React Native et expérience utilisateur fluide

React Native est une libraire développée par Facebook afin de faire des applications native en utilisant React. Ceci permet de réutiliser les connaissance d'une personne qui sait faire un comosant React pour le web et de réaliser une application native en mutualisant une grosse partie du code. Facebook l'a utilisé sur plusieurs applications grand public et les ingénieurs qui les ont développés n'étaient pas familier avec le développement iOS et Android. Pour information, il s'agit bien d'une application native qui est générée et non d'une application web hybride. Le présentateur du talk nous a ensuité présenté une librairie développée par facebook pour faire des animations précises , simplement et sans modifier trop les compsants. Le résultat est assez impressionnant.

GraphQL

Graphql est un protocole de description entre le client et le serveur créé par facebook et open-sourcé le jour de la conférence. spec. Il y avait déjà eu une présentation rapide au mois de ja ncier dernier par facebook. GraphQL est un système qui permet de typper les données:

type Human {
  id: String
  name: String
  homePlanet: String
}

Et ensuite de faire des requête sur des données arboressante de manière efficace:

  • En ne ramenant pas tous les champs
  • En ramenant des objets documentaires de manière efficace (pas tout l'objet d'un coup)

Par exemple:

query HeroNameAndFriendsQuery {
  hero {
    id
    name
    friends {
      id
      name
    }
  }
}

Retourne la réponse

{
  "hero": {
    "id": "2001",
    "name": "R2-D2",
    "friends": [
      {
        "id": "1000",
        "name": "Luke Skywalker"
      },
      {
        "id": "1002",
        "name": "Han Solo"
      },
      {
        "id": "1003",
        "name": "Leia Organa"
      }
    ]
  }
}

Cette technique permet: une description des ressources très efficace, une utilisation par des clients multiples d'une API évolutive sans tout casser. Une description des ressources nécessaires côté client de manière très claire et un catalogue des ressources sur le serveur. Elle permet une minimisation des aller-retours entre le client et le serveur tout en restant efficace côté client. Facebook utilise cette technologie en production depuis 2 ans. Il faut donc que :

  • le client effectue des requêtes de type GRAPHQL
  • Que le serveur soit capable de les traiter

Don't rewrite React

Ce talk présente quelles erreurs on peut faire en arrivant sur React. Quelle approche il faut avoir pour travailler de manière react. Il est présenté par une personne s'occupant de React routeur et explique également les choses à venir de ce côté.

React hot loader

La personne qui fait le talk a développé React hot loader. Qui comme son nomm l'indique permet de remplacer du code React a chaud. Il a ensuite présenté Redux qui est une librairie permettant de faire du flux en changeant l'approche:

Flux:
Actiion -> Dispatcher -> Store, Store, Store -> Component
Redux:
Actiion -> f(data)**f(data) -> Component

En gros plutôt que de passer par un cycle de gestion des données évenmentiel, il propose d'utiliser l'approche programmation focntionnelle et de concidéere les store comme des reducer sur les données. Comme ça on simplifie la lecture, le debug et les points d'injections dans la chaîne de traitement. Il a ensuite fait la démo d'une fenêtre de déboggage lié à ses stores. Vraiment très interessant dans l'approche.

Relay an application Framework for React

Relay est un framework construit pour fonctionner avec la paire React et GraphQL. (Il a déjà été présenté à la dernière conf React par Facebook au mois de Janvier, ils ont prévus de le rendre open source en aôut) L'approche est la suivante: Les compoosants expriment leurs besoins en terme de données. En prarique il expriment une requête graphQL un peu sur le même mode que je jsx. Ensuite les composants principaux sont rendus par des wrappers de manière transparente et quand ils sont prêt et ont recus leurs données. L'approche est encore une fois en mode programmation fonctionnelle, l'objectif est de faire ce qu'ils ont réussi à faire avec React pour les composants du côté des API et du requêtage. C'était super instructif, et très clair dans les explications et le pourquoi ils font tout ça.

BackToTextUI

Alors, comme React se base sur un DOM virtuel, il est possible de rendre d'autres choses que le DOM HTML: du svg, du canvas, il y en a qui ont pensé à du WebGL, et même à faire une application pour la console. La motivation principale est de montrer que les principes du composant / props / state sont tès simple et que l'on peut ajouter des points de capture et étendre le fonctionnement très simplement. Après pour faire une application console, de mon point de vue l'interêt est limité.

DOM is a second class citizen

Dans la foulée du talk précédent. Ce talk a surtout parlé du DOM virtuel, des optimisations réalisés et en cours de travail. Ils ont été surpris par l'adoption rapide et l'extension des possibilités. Ils ont prévus de faire des améliorations sur la partie CSS. Comme la personne présentant est Core developer sur React, il y a eu plein de questions autour du moteur de diff du DOM, et de ce qu'ils souhaitaient faire pour les prochaines versions. Ils ont du coup annoncé que pour la version 0.14beta, le rendu dans le DOM et les composants seraient dans deux sous libs séparés.

Day 2

Code transformation workflow

Le présentateur est celui qui a crée babel.js, un transpiler d'ES6/ES2015 vers ES5. (il a 17 ans) Il présente les étapes de transformations, explique qu'il réalise aussi des optimisations. Il pense qu'il doit être possible de se lier avec des outils d'analyse de code comme flow de facebook.

Animation

Cette conférence était vraiment top. La personne qui présente s'occupe des animations pour React chez facebook. Il a expliqué que les animations css n'étaient pas pratiques car non pausables et qu'on ne peut pas les rejouer ou les interrompre quand on veut pour effectuer un retour à un certain état. Elles ne sont pas composables également. Il a construit une librairie d'animation assez impressionnante et qui reste performante tant qu'on anime pas plus de 100 éléments en même temps. Son api est très claire et compréhensible. Et fonctionne comme un enrrobage des compsants. Elle est plus simple que celle présentée la veille sur react native mais elle est moins customizable. (Ce qui n'eest pas souvent un problème). Il a aussi expliqué que les animations changent radicalement l'expérience utilisateur.

Simplifying the data layer

Le présentateur travaille à Facebook, il nous a présenté comment il faisait pour définir leur architecture afin de construire une application temps réel. Il a appellé ç-a la lambda architecture. Encore une fois une approche programmation fonctionnelle. Il explique également comment il faisait pour gérer les données venant depuis le serveur vers l'application. Il voit la source de données comme un gros log avec timestamp |key|payload. Ensuite les différents composants ou applications sont des reducers qui traite le log pour en faire ce qu'ils souhaitent. Ce qui était intéressant n'est pas le log mais plus l'approche fonctionnelle pour traiter ces cas.

Mobilité

La personne qui a développé touchstoneJS a présenté les pratiques sur la mobilité. L'application hybride existe encore mais elle va avoir tendance à disparaître au profit de react native. Cepedant quand on est dans des cas basique il est très simple de faire une application hybride. Il recommande (c'est normal vu son produit) de s'appuyer sur des bibliothèque de composant pour la mobilité.

React Router

Présentation de la version 1.0 du routeur, le mot d'ordre est plus d'explicite moins de magique. Gestion des transitions entre page et de l'url avec un état en fonction de ce qu'on faisait. Amélioration du rendu côté serveur. Possibilité de mettre le routeur progressivement en place. Intéressant.

Construire un serveur GraphQL

Ils nous ont expliqué les étapes de constructions d'un serveur GraphQL. Ce qui est super important c"est pour eux d'arriver à contruire un eco system avec l'aide de la communauté React. Ensuite ils offrent les outils pour comment créer et gérer les requêtes GraphQL. Ils précisent que Facebook est prêt à aider ceux qui vont mettre en place ce type de serveur. L'exemple en node.js a été open sourcé.

Comment construire un sous marin qui ne coule pas

Une conférence autour des bonnes pratiques de développement sur React. Autour des formulaires et de la gestion de l'état dans les composants. Ce qui était plaisant c'est qu'on est passé par les mêmes difficultés et qu'on était arrivés au mêmes conclusions sur l'élaboration de certains composants.

Plugins avec React

Dans cs Talk ils nous présentent les bonnes pratiques sur les plugins avec React. Comment gérer les inter dépendances entre store. Comment injecter des composants (Ca ressemblait beaucoup à ce qu'on a fait sur le header de l'application et l'injection de composnts). Ils on ajouté une couche de gestion des erreurs quand un plugin n'est pas apte à fonctionner. Chose qu'on pourrait reprendre.

Questions

Il y a eu une séance de question réponse. Le principal enseignement que j'ai tiré c'est : Il font avancer React en le stabilisant un maximum. Ils savent que leurs évolutions d'API doivent se faire progressivement pour que la communauté suive. Ils se concentre sur les améliorations de leur moteur interne et la séparation des API de rendu du DOM HTML et du reste.

Conclusion

Cette conférence était vraiment géniale. Avec que des intervenants de haut niveau. Ca donne plein d'idée dans la contuinuité de ce que l'on construit. Prendre les retour d'expérience des différents intervenants était très instructif. Ca bouge bien tout en étant stable. L'adoption de React par les géants du Web est impressionnante.

Pierre

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment