Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Stratégies et architectures front-end modernes

Stratégies et architectures front-end modernes

Nicolas Cava

May 20, 2015
Tweet

More Decks by Nicolas Cava

Other Decks in Programming

Transcript

  1. Et ils étaient redevables de l’ opinion des back-ends sur

    comment les choses devaient être faites
  2. Et le reste de l’architecture serveur fut là où les

    “tripes” de l’ application étaient
  3. Dans un sens, l’UI layer back-end (souvent à travers les

    templates) fut un léger layer dans l’ application serveur
  4. L’idée d’écrire du JavaScript sur le serveur (la place où,

    auparavant, ils étaient “obligés” d’aller)
  5. Donc, tout ce dont les fronts-ends auraient besoin serait la

    capacité de faire des appels REST pour builder une application
  6. Ce pour quoi ils se préoccupent c’ est de comment

    la donnée est stockée, retournée, et manipulée
  7. Séparer l’UI layer back-end de la business logic back-end fait

    beaucoup de sens dans une architecture large
  8. Il n’y avait pas de bonne option pour les front-ends

    pour builder l’ UI layer back-end à leur manière
  9. Il n’y avait pas de meilleur choix et les front-ends

    faisaient à contrecoeur car il n’y avait pas de réelle alternative
  10. Dites aux back-ends de fournir la donnée que les front-ends

    ont besoin, avec la business logic correspondante
  11. Et les front-ends seront capables de concevoir de belles interfaces

    performantes et accessibles aux utilisateurs
  12. Utiliser NodeJS pour l’UI layer back-end libère les back-ends d’

    une liste de problématiques qui ne les concernent et intéressent pas
  13. Ce qui permet une itération rapide des deux domaines sans

    s’affecter tant que les interfaces RESTful restent intactes
  14. Cela veut dire que chaque ligne de code donnée (à

    quelques exceptions près) peut s’exécuter à la fois sur le client et le serveur
  15. Le server-side rendering est optimal par exemple pour le SEO,

    le support d’anciens browsers, ou la perception utilisateur de la performance
  16. Du fait de l’environnement web, l’ HTTP a créé une

    division artificielle qui ne fait aucun sens entre le client et le serveur au niveau logique
  17. On a toujours fait en sorte de dupliquer la logique

    sur le serveur car le browser était historiquement trop “instable”
  18. Pas de support aux search engines et utilisateurs qui ne

    supportaient pas de JavaScript, limitations technologiques diverses
  19. Du fait, la logique d’application est en partie sur le

    serveur, mais en développement d’application native, c’est un non-sens
  20. Le client et le serveur ne sont plus que des

    APIs différentes, avec des comportements différents, qui partagent la même logique
  21. Du fait de tout cela, le bon vieux pattern MVC

    ne fait plus de sens en isomorphisme
  22. React est isomorphique, du fait qu’il utilise un Virtual DOM

    pour pouvoir builder des composants d’ interface
  23. De plus, Facebook ont développé React Native qui reprend ce

    concept pour le développement d’ application native !
  24. Les Stores sont le coeur de l’ application. Ce sont

    eux qui détiennent l’état de l’application
  25. Du fait que le Dispatcher peut rendre les callbacks synchrones,

    les Stores peuvent attendre qu’un autre finisse avant de processer
  26. En haut de la hiérarchie du View Layer, se trouvent

    des Controller- views qui handlent les change events
  27. Ils peuvent récupérer les données qu’ils ont besoin via des

    méthodes publiques fournies par les Stores
  28. Une Action peut être créée par un retour serveur autant

    que par une interaction utilisateur sur l’UI
  29. Le modèle de données peut donc être plus ou aussi

    permissif que le contrat de l’API, selon les besoins de l’application
  30. Aujourd’hui, ils sont capables de fournir une UI robuste et

    performante, bâtie sur le même codebase, avec la même architecture