Déconstruisons les frameworks JavaScript pour mieux réinventer le web !

Publié le

Mis à jour pour le MiXiT.

Bonjour à toutes et à tous !

Vous trouverez plus bas des ressources pour creuser encore plus sur ce que nous avons vu toutes et tous ensemble.

Si vous souhaitez garder contact, n’hésitez pas à m’ajouter sur LinkedIn !

https://www.linkedin.com/in/nirinarabeson/

Et si vous voulez tester le framework présenté durant le talk, voici la commande :

npm i nirina.js


Pourquoi tu ne parles pas de Server Side Rendering (SSR) ?

Car je déteste le Server Side Rendering !

Trois raisons principales :

  • Je ne vois pas quel problème le SSR résout qui n’est pas plus simplement résolu par le Static Site Generation (SSG)
  • Les pires bugs de production que j’ai pu rencontrer étaient liés à du SSR
  • Cela rend les architectures plus complexes

Le Server Side Rendering a été inventé pour résoudre un problème : comment améliorer le SEO et la performance, pour des pages extrêmement distribuées dans le monde entier. Il se trouve que le Static Site Generation avec des islands fait presque la même chose, mais pour bien moins cher, avec comme inconvénient un moins bon SEO. Mais avez-vous souvent besoin d’une infrastructure mondialement distribuée avec un SEO optimisé aux petits oignons ?

Pour les pires bugs en production : je ne veux plus débuguer des bugs d’hydratation (c’est quand le serveur et le client ne sont pas d’accord sur l’html obtenu), et je ne veux plus débuguer des problèmes de bugs en prod qui apparaissent parce qu’un coup c’est le client qui fait l’appel et un coup c’est le serveur qui fait l’appel vers… le backend.

Pour l’architecture, c’est lié au point précédent : c’est un peu étrange, surtout dans un grand groupe, de rajouter encore un serveur qui va plus ou moins faire passe plat vers d’autres serveurs. N’avons-nous pas trop de microservices déjà ? Est-ce qu’on veut vraiment rajouter un serveur pour faire ce que nginx fait déjà bien ? Faire du SSR multiplie par deux toutes les questions d’infra et d’architecture que l’on peut se poser… Alors qu’on pourrait juste garder les choses simples et faire un serveur frontend simple, et plusieurs backends techniques.

Pourquoi tu es contre écrire des fetchet des requêtes axios ?

Écrire un appel API est une source d’erreurs incroyable : c’est complexe d’écrire proprement une baseUrl, il faut connaître les endpoints à appeler, savoir le verbe HTTP à utiliser, ajouter les bons headers et “deviner” le format attendu par les endpoints (ou se prendre des 400 tout le long).

À la place, transformez vos contrats d’interface en du typage strict avec un générateur de client API. Par exemple, vous pouvez tester openapi-generator. Au lieu d’écrire manuellement vos requêtes web, vous les faites générer en un client API javascript à partir des contrats d’interface / fichiers swagger de vos serveurs backend. Je suis sûr que vos ingénieurs backend sont capables de faire cela.

Bonus : vous pourrez très facilement intégrer toutes les problématiques d’authentification ou de cache de façon unifiée grâce à ces clients APIs.

Avec quoi publierais-tu ton premier package ?

vite.js permet déjà avec le mode lib de publier de très bons packages. Et pour correctement définir les points d’entrée, exporter du CSS, exporter les bons modules, je vous invite à copier coller des packages que vous aimez bien, ou à utiliser une IA pour proprement mettre tout cela en place.

Je vous propose de lire la documentation de vite.js qui est plutôt pas mal : https://vite.dev/guide/build#library-mode

Quelques idées pour vos premiers packages :

  • Un client API généré à partir d’un swagger (voir le point précédent)
  • Un début de composants ou de styles réutilisables ?
  • Pourquoi pas vous lancer dans un design system ?

Tu parles de microfrontends, peux-tu en dire plus ?

L’idée d’un microfrontend, c’est de permettre de déployer des bouts d’une application indépendamment. On va un peu plus loin que la notion de packages parce qu’on inclue aussi la façon dont le package va être utilisé et déployé en production.

Techniquement, c’est un peu plus complexe que ça mais si vous voulez commencer, vous pouvez vous en sortir avec des iframes.

Fonctionnellement, une stratégie microfrontend est plutôt centrée sur la façon de délivrer vos applications web, surtout quand elles ont des cycles de livraisons différents. En fonction de l’organisation de votre équipe, cela peut très bien ou très mal se passer (un vrai cas d’école de la loi de Conway)

Utiliserais-tu ton propre framework pour partir en production ?

A priori, non.

Aujourd’hui je n’implémente quasi aucune notion de performance. Je pourrais le faire static site generate mais il ne serait je pense pas très efficace pour faire des injections stratégiques de réactivité… À tester.

Des liens qui m’inspirent

J’aimerais également partager une liste d’articles et de liens qui m’ont inspiré et permi de vous faire ce talk :

Merci beaucoup pour la lecture, et je vous souhaite une excellente journée !

Une newsletter qui parle d'humanité et de technologie ?

La tech évolue très vite. Et c'est difficile à suivre. Nous rentrons dans un monde qui change éternellement, et si les innovations se succèdent, mais c'est dur pous nous, les humains, de suivre.

Et si je vous aidais à y voir plus clair ?

Je publie une fois par mois sur plein de sujets, avec ma touche personnelle, mon sarcasme et mon humour...

Alors ne ratez rien et abonnez vous !

Vous pouvez vous désinscrire à tout moment. Pour plus de détails, vous pouvez me contacter à hello@nirinarabeson.fr.