Couverture de l'article #4 - Construire un DOM Virtuel, les différentes méthodes de rendu et bien écrire ses tests : retour de la Vue.js Amsterdam 2023
Retour aux articles

L'agence

WanadevStudio

#4 - Construire un DOM Virtuel, les différentes méthodes de rendu et bien écrire ses tests : retour de la Vue.js Amsterdam 2023

Il y a 3 ans

Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

Cet article est le troisième des quatre, vous pourrez retrouver chaque partie de cette série ici :

Dans cet article nous allons voir comment construire un Virtual DOM, on parlera des différentes façons de faire du rendu dans le web, de comment écrire des bons tests et plein d’autres choses.

Beaucoup de sujets à traiter, alors, c’est parti !

Construire un Virtual DOM - Marc Backes (Replay)

Marc nous présente ce qu'est un Virtual DOM et comment en construire un !

Qu'est-ce qu'un DOM ?

DOM signifie "Document Object Model", c'est :

  • une interface de programmation pour les documents HTML et XML.
  • une représentation du document sous la forme d'un arbre de nœuds (nodes).
  • manipulable et accessible avec JavaScript.

Qu'est-ce qu'un Virtual DOM ?

  • c'est une représentation virtuelle du DOM réel.
  • dans la mémoire du navigateur.
  • il est synchronisé avec le DOM réel.
  • c'est ce que Vue et bien d'autres frameworks utilisent !

Pourquoi faire ?

  • ça permet de découpler la logique de rendu du DOM réel.
  • c'est plus facile à manipuler et à inspecter.
  • c'est facile à réutiliser en dehors du navigateur.

Comment ça marche ?

Comment fonctionne le DOM virtuel

Comment créer son Virtual DOM ?

Il faut plusieurs ingrédients pour créer son Virtual DOM :

  • une fonction "h" hyperscript qui, en gros, est du "JavaScript qui produit du HTML". Elle sert à créer des vnodes (nœuds virtuels).
  • une fonction de montage dans le DOM : mount.
  • une fonction de retrait du DOM : unmount.
  • une fonction de mise à jour du DOM : patch.

La démonstration de Marc étape par étape, nous permet de comprendre comment implémenter ces différentes méthodes !

Vous pouvez retrouver l'implémentation de ces différentes méthodes sur le repo GitHub suivant : https://github.com/themarcba/vue-vdom

Construire un design system avec Chakra UI - Sybren Willemot (Replay)

Sybren fait le parallèle entre design system et un mélange tout préparé pour de la pâtisserie.

Ça permet d'aller plus vite dans un cas pour la cuisine, dans l'autre pour le développement de son produit !

Chakra UI a donc pour mission d'accélérer le processus de développement en proposant :

  • une mise en oeuvre simple de design system
  • une liste de composants
  • de l'accessibilité
  • un thème configurable et extensible
  • une compatibilité avec Vue 3

S'ensuit une démonstration de comment on peut se servir de Chakra que je vous invite à visionner.

La saga des problèmes de rendu Web - Alba Silvente Fuentes (Replay)

Dans cette saga, Alba nous propose une vue d'ensemble des modes et stratégies de rendu Web avec leurs avantages et inconvénients.

Rendu côté client (Client Side Rendering)

Les plus :

  • moins cher (pas de serveur).
  • support hors-ligne (s'il n'y a pas d'APIs).
  • UX dans l'application.

Les moins :

  • mauvaise performance au premier rendu.
  • accessibilité (JavaScript désactivé).

Rendu côté serveur (Server Side Rendering)

Les plus :

  • amélioration des performances (charge initiale).
  • amélioration de la sécurité.
  • meilleur référencement (SEO).

Les moins :

  • interactivité limitée.
  • mauvais pour les connexions lentes.

Génération de sites statiques (Static Site Generation)

Les plus :

  • performant (CDNs).
  • pas cher.
  • SEO
  • amélioration de la sécurité.
  • évolutif et facile à maintenir.

Les moins :

  • interactivité limitée.
  • authentification de l'utilisateur ou traitement des données.

Génération différée de sites (Deferred Site Generation)

Les plus :

  • améliorations des temps de "build".
  • conserver les avantages de la génération statique : SEO & performance.

Les moins :

  • support limité.
  • complexité accrue.

Régénération statique incrémentale (Increment Static Regeneration)

Les plus :

  • prise en charge des données dynamiques (sans "rebuild").
  • disponibilité (page de "fallback").
  • temps de "build" plus rapide.

Les moins :

  • support limité.

Rendu de bord (Edge Rendering)

Les plus :

  • fonctionne mieux avec du contenu dynamique.
  • évolutivité améliorée.
  • réduit la latence du réseau.
  • mise en cache en temps réel.

Les moins :

  • flexibilité : utiliser plusieurs modes de rendu.

Rendu hybride (Hybrid Rendering)

  • Il s'agit généralement d'une technique qui combine le rendu côté serveur et le rendu côté client (on appelle ça le rendu universel).
  • Hybrid 2.0 : la stratégie de mise en cache par route. Avec cette stratégie, les routes peuvent être une page statique générée à la demande, revalidée, une SPA (Single Page Application) ou bien côté serveur.

Il existe beaucoup d'autres méthodes de rendu

Les autres méthodes de rendu

Que choisir ?

Pour son projet, Alba a choisi la Jamstack. C'est une approche architecturale qui dissocie l'expérience web de la couche données et logique de l'application. Elle assure l'évolutivité, la flexibilité, la performance et la facilité de maintenance.

JAM :

  • J = Javascript
  • A = API
  • M = Markup

Dans sa démonstration, Alba utilise pour la partie "J", Nuxt.js, pour le "A" Storyblok car c'est là où elle travaille et pour "M", Netlify !

E-Commerce aussi facilement qu'un composant UI - Ramona Schwering (Replay)

Ramona nous présente shopware/frontends un petit framework qui permet d'ajouter des fonctionnalités e-commerce dans son site web en se servant de ShopWare en tant que source de données.

Le projet se base techniquement sur Vue 3, Vite, Nuxt 3 et Tailwind.

Comment ça fonctionne concrètement ?

Comment fonctionne shopware

Ramona nous fait ensuite une démonstration de comment ça fonctionne avec une carte produit et un panier basique que je vous invite à visionner.

L'idée de Shopware est d'offrir des outils pour construire un e-commerce facilement grâce au pouvoir des composables tout en offrant à la fois une bonne expérience développeur et une bonne expérience utilisateur !

Écrire de (vrais) bons tests - Markus Oberlehner (Replay)

Markus nous fait une présentation sur comment faire du TDD quand on est un développeur Vue.js.

Tout d'abord, pourquoi écrire des tests ?

  • Pour refactoriser en toute confiance !
  • Pour écrire un meilleur code plus rapidement !
  • Pour déployer le vendredi (si on a envie) !

C'est quoi le TDD ?

C'est :

  1. écrire un test qui échoue.
  2. implémenter une fonction qui permet au test de fonctionner.
  3. refactoriser sa fonction.

Comment écrire de bons tests ?

  1. Écrivez les tests en premier !
  2. Découplez tout !

Découpler ?

Oui, découpler :

  • le cadre pour réduire le coût du changement.

  • les détails d'implémentation :

=> utiliser findByRole, findByLabelText, findByText plutôt que les sélecteurs CSS.

=> écrire ses propres méthodes d'utilitaires/tests.

  • l'interface utilisateur :

=> comment ferait-on si on devait tester un assistant vocal ?

Grâce au découplage, notre test ressemblerait à ça :

partie 1 de l'illustration du code avec le test

partie 2 de l'illustration du code avec le test

Pourquoi découpler ?

  • ça fournit une documentation de facto.
  • on peut le partager avec un expert du domaine et il pourra comprendre ce que ça fait.

S'en est suivie une démonstration que je vous invite à visionner.

Merci d’avoir lu ce résumé de la seconde partie du deuxième et dernier jour de la Vue.js Amsterdam 2023.

Cet article était le dernier de la série consacrée au résumé de ces deux jours de conférences. Vous pouvez retrouver l’ensemble des articles ci-dessous :

  1. Partie 1
  2. Partie 2
  3. Partie 3
  4. Partie 4
Photo de Louis GOURAIN auteur de l'article

Louis GOURAIN

  • Couverture de l'article #2 - Module Federation et Vue à l'ère de l'IA : retour de la MadVue 2026
    #2 - Module Federation et Vue à l'ère de l'IA : retour de la MadVue 2026

    Il y a 3 mois

    Voici la seconde partie de mon retour sur la MadVue 2026, la conférence Vue.js qui s'est tenue à Madrid le 22 mai 2026. Si vous avez manqué le début, la première partie est juste ici :

    Après les fondations de l'application Vue moderne, on change d'échelle et d'époque. Dans cet article, on va voir comment partager des composants entre plusieurs applications Vue avec Module Federation, puis trois talks consacrés à Vue et l'intelligence artificielle : faire générer une interface en direct par un LLM, préparer son projet Vue pour les agents, et enfin apprendre le frontend à l'ère de l'IA.

    C'est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #1 - Temps réel, URLs typées, formulaires et toolchain : retour de la MadVue 2026
    #1 - Temps réel, URLs typées, formulaires et toolchain : retour de la MadVue 2026

    Il y a 3 mois

    Le 22 mai 2026, je me suis rendu à Madrid pour la MadVue 2026, la conférence espagnole dédiée à l'écosystème Vue.js. Une journée dense, neuf talks, et une tendance de fond très claire : entre une grosse moitié orientée IA et expérience développeur et une autre consacrée aux fondations qui rendent nos applications soutenables.

    Dans cette série de deux articles, je reviens sur l'ensemble des talks. En les lisant, vous aurez l'impression d'y avoir assisté.

    Cet article est le premier des deux, vous pourrez retrouver chaque partie de cette série ici :

    Dans ce premier article, on pose les fondations d'une application Vue moderne : on verra comment faire du temps réel proprement, comment en finir avec le parsing manuel des paramètres d'URL, un tout nouveau modèle pour construire ses composants de formulaire, l'avènement d'une toolchain JavaScript unifiée (Oxc, Rolldown), et ce qui nous attend avec Nuxt 5.

    Beaucoup de sujets à traiter, alors c'est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #3 - Vue.js en 2023, l'avenir de Vue Router, les patterns avec Pinia  : retour de la Vue.js Amsterdam 2023
    #3 - Vue.js en 2023, l'avenir de Vue Router, les patterns avec Pinia : retour de la Vue.js Amsterdam 2023

    Il y a 3 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le troisième des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article on va parler de Vue en 2023, de patterns Pinia, du futur de vue-router, de l’écosystème Vue et de TypeScript avec Vue.

    Beaucoup de sujets à traiter, alors, c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #2 - Nuxt.js, l'art de la composition, accessibilité : retour de la Vue.js Amsterdam 2023
    #2 - Nuxt.js, l'art de la composition, accessibilité : retour de la Vue.js Amsterdam 2023

    Il y a 4 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le second des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article on va parler de Nuxt en 2023, d’un client Mastodon fait avec Nuxt, d’expérience développeur sur Nuxt, de Nitropack, de CSS-in-TS, de comment concevoir ses composants Vue.js, d’accessibilité et de maintenance d’écosystème open-source en entreprise.

    Beaucoup de sujets à traiter, alors c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article #1 - NPM Package, PlayWright, Google LightHouse : retour de la Vue.js Amsterdam 2023
    #1 - NPM Package, PlayWright, Google LightHouse : retour de la Vue.js Amsterdam 2023

    Il y a 4 ans

    Pour la première fois, Wanadev s’est rendu à la plus grosse conférence annuelle autour de Vue.js : la Vue.js Amsterdam 2023. J’ai eu l’honneur d’assister à la 5ème édition, couronnée par le retour d’Evan You, le créateur de Vue.js et Vite, en personne.

    Dans cette série de quatre articles, je vais vous faire revivre ces deux jours de conférences. En les lisant, vous aurez l’impression d’y avoir assisté !

    Cet article est le premier des quatre, vous pourrez retrouver chaque partie de cette série ici :

    Dans cet article, nous allons parler de Rock’n Roll, voir comment créer son package NPM, découvrir PlayWright pour tester ses applications de bout en bout, parler de commerce international, déconstruire les idées reçues sur Google Lighthouse et aborder le sujet de la performance sous Vue.js.

    Beaucoup de sujets à traiter, alors c’est parti !

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite
  • Couverture de l'article React, Vue, Angular : quel framework front choisir en 2021 ?
    React, Vue, Angular : quel framework front choisir en 2021 ?

    Il y a 6 ans

    La question revient souvent sur le devant de la scène. Dans le monde du framework web, on a du choix c’est bien, mais encore faut-il s’y retrouver et savoir lequel choisir.

    Photo de Louis GOURAIN auteur de l'article

    Louis GOURAIN

    Lire la suite