Formation « Développer des blocs Gutenberg sur mesure avec React »

Prérequis : dois-je maîtriser Js et React pour développer pour Gutenberg ?

Lecture : 8 minutes • 4

Historiquement, on devait maîtriser PHP et jQuery pour réaliser des sites avec WordPress. Mais tout a changé avec l’arrivée de Gutenberg. Mais faut-il vraiment être un expert React pour créer des blocs ? C’est ce que l’on va voir dans ce cours.

La plupart des développeurs WordPress historiques maîtrisent PHP. Après tout, c’est la simplicité de PHP qui a permis à WordPress de se développer et attirer autant de curieux.

Même si WordPress reste majoritairement codé en PHP, l’arrivée de Gutenberg a chamboulé les répartitions des technologies et JavaScript commence à dominer le terrain.

D’ailleurs Matt Mullenweg, le créateur de WordPress, avait demandé aux développeurs d’apprendre le JavaScript en profondeur, lors de la conférence annuelle WordPress « State of the Word » en 2015.

Matt Mullenweg
Matt Mullenweg lors d’un WordCamp

Du coup, est-ce que tout ce JS va être un frein à l’apprentissage de la création de blocs ? Eh bien non ! Comme on va le voir dans ce cours, la barrière d’entrée n’est pas si haute que ce qu’on peut croire, et je vais vous donner toutes les billes pour réussir !

Les prérequis techniques de la formation

Logos de JavaScript, PHP et React.JS.

Pour suivre cette formation, vous devez avoir des bases en programmation, même si ces bases sont en PHP plutôt qu’en JavaScript.

verrouillé Vidéo premium

Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?

Choisir une formule

Il faut aussi avoir une bonne connaissance du fonctionnement de WordPress sous le capot, et notamment les hooks.

Après, ce n’est pas trop grave si vous ne maîtrisez pas le JavaScript. Lorsque j’ai commencé à m’intéresser aux blocs en 2018, j’avais de très mauvaises bases en JS, car j’avais uniquement codé à l’aide de jQuery, comme beaucoup d’entre-nous.

Alors oui, React c’est une logique et une syntaxe différentes du JS classique, c’est d’ailleurs pour ça que le code a besoin d’être compilé afin d’être compris par le navigateur.

Mais vous allez voir que WordPress, comme d’habitude, propose des fonctions et des surcouches pour simplifier le code et améliorer l’expérience du développeur.

Et les documentations officielles sont plutôt complètes, avec plein d’exemples pour bien comprendre chaque concept.

Conseil

Pas besoin d’être un expert JS pour suivre cette formation ! Il vous suffit de bien connaître WordPress et d’avoir des bases solides en développement web.

Ce que l’on va aborder dans cette formation

Sur ce site, j’ai écrit la formation que j’aurais aimé suivre en 2018, lorsque j’ai commencé à apprendre les blocs. Je pars donc du principe que vous n’avez pas encore forcément toutes les compétences autour de React.

verrouillé Vidéo premium

Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?

Choisir une formule

Dans la formation, on va du coup en profiter pour aborder les syntaxes modernes du JavaScript mais également les bases de React. Ainsi, vous serez rapidement à l’aise avec fondamentaux de JavaScript.

Avec WordPress, on respecte les principes de React, mais ils sont en général tous surchargés par l’éditeur de blocs. Donc peu importe si vous connaissez ou non les hooks React ou non, la gestion des états et des contextes…

Dans la formation, on va voir comment créer un bloc de base, rendre son contenu administrable, ajouter des réglages, lire des données du back-end

Et d’ici la fin de la formation on verra même des études de cas de vrais blocs que j’utilise au quotidien : le bloc plugin, le bloc relationnel (un peu comme avec ACF) et le bloc sommaire.

Et surtout, on ne va pas s’embêter à configurer un compilateur JS car WordPress nous en fournit un prêt à l’emploi, qui s’appelle create-block. On verra en début de formation comment se préparer, notamment en installant Node.js sur notre ordinateur.

Conseil

Au final développer en JS et React est devenu très accessible, à la portée de tout développeur. Et WordPress a apporté sa touche pour simplifier la vie au développeur.

Pourquoi WordPress s’oriente vers le JavaScript ?

WordPress, au même titre que les applications web moderne, tend à adopter de plus en plus le JavaScript, afin de bénéficier notamment d’une interface plus fluide et plus réactive. On va voir pourquoi un tel revirement était nécessaire.

verrouillé Vidéo premium

Cette vidéo est réservée aux détenteurs de l’offre premium.
Envie de nous rejoindre ?

Choisir une formule

Le problème du tout « PHP »

A l’origine d’Internet les pages web étaient « imprimées » virtuellement par un serveur et affichées sur votre machine. A chaque nouveau clic, une nouvelle page était générée côté serveur puis envoyée par Internet jusqu’à votre ordinateur.

C’est encore sur ce modèle que se base aujourd’hui grandement dans les pages d’administration de WordPress (hors Full Site Editing).

Si je schématise le fonctionnement, ça donne ceci :

Requête classique client serveur
La requête est envoyée du client par le navigateur. Le serveur renvoie une page HTML

Lorsque vous demandez une page web, le client (c’est-à-dire votre machine), lance une requête HTTP via le navigateur vers le serveur. Celui-ci va générer la page demandée via PHP / MySQL et retourner une page HTML.

Autant ce fonctionne est adapté pour une page web, autant ça ne l’est plus du tout pour une application web : imaginez qu’à chaque action sur Facebook, ou qu’à chaque nouveau tweet sur votre mur, il y ait un rechargement de page. 

C’est le gros problème de l’interface d’administration de WordPress : chaque menu demande un rechargement complet de l’interface. C’est long, et lourd, d’autant plus si on ajoute trop d’extensions.

Information

Aujourd’hui, le côté client des applications web est géré par JavaScript. PHP s’occupe uniquement d’envoyer des données à partir du serveur.

Bénéfices de WordPress en mode « web app »

Maintenant, lorsqu’on jette un œil aux nouveaux menus de WordPress, dans Apparence > Éditeur, c’est complètement différent :

Le menu des styles globaux de WordPress.
La nouvelle interface de wordPress avec le Full Site Editing

Lorsque vous naviguez entre les différentes rubriques, le chargement des éléments est quasiment instantané : il n’y a pas de rechargement entre chaque clic.

Tout est plus fluide, et c’est rendu possible grâce à React et à des requêtes Ajax vers l’API REST de WordPress !

Cette fois, c’est JavaScript qui est responsable de générer l’affichage de l’interface, et de gérer son côté interactif.

Le serveur n’a donc plus besoin de générer une page HTML pour chaque action, et s’occupe simplement de distribuer des données brutes au format JSON.

Javascript peut alors créer dynamiquement l’affichage en fonction des données, et mettre à jour le rendu si d’autres données arrivent, sans rechargement de page.

Si je schématise, en me basant sur le précédent schéma, on obtient maintenant ceci :

une requête API client serveur
Le serveur est contacté pour récupérer des données brutes en JSON

Le bénéfice ici est le gain de temps de chargement ainsi que l’économie de ressources serveur. Javascript peut alors adapter le rendu de la page en temps réel en fonction des informations reçues.

Pourquoi jQuery ne suffit plus ?

jQuery
jQuery

Librairie phare des années 2010, jQuery est utilisé encore aujourd’hui dans une grande majorité des projets web, dont WordPress.

Mais la librairie qui rendait ludique le Javascript ne suffit plus aujourd’hui à combler les besoins d’un web qui a grandement évolué.

Le principe de jQuery

Le principe de jQuery est de manipuler le DOM (Document Object Model), c’est-à-dire les éléments d’une page web, ou la transcription du HTML en objets avec lesquels on peut interagir.

Prenons cet exemple tout simple :

JS
script.js

Sur le principe on commence toujours par cibler un élément, grâce à un sélecteur CSS et à l’objet $ (qui fait référence à l’objet jQuery).

Et ensuite on assigne une action ou un événement derrière. Pour la première ligne : on assigne un écouteur d’événement sur le clic de la souris.

Lorsque cet élément sera cliqué, on lancera la fonction qui suit, qui va aller cibler cette fois le message pour lui injecter un texte et le faire apparaître.

Cette approche semble à priori plutôt sexy mais atteint ses limites au niveau d’une application web complète.

Les limites de jQuery

On va maintenant prendre l’exemple d’une application de gestion de tâches simple, où l’on peut créer des tâches et des listes de tâches. On pourra valider une tâche, la supprimer, en ajouter une nouvelle ainsi que créer et supprimer des listes.

Voici un schéma :

Application de liste de tâches
Une application de gestion de tâches

Dans le coin supérieur droit, on voit qu’il y a le total des tâches accomplies, et des tâches à accomplir. Une fonction permet de compter ces tâches.

En jQuery, lorsqu’une tâche est ajoutée / validée / supprimée, ou lorsque une liste entière est supprimée (qui a pour effet de supprimer plusieurs tâches) alors il faut relancer manuellement la fonction de comptage des tâches.

On commence à se rendre compte qu’il devient très facile à ce point d’oublier d’appeler cette fonction.

C’est là tout le problème : jQuery manipule le DOM, là où React est conçu pour manipuler des données.

Différence entre jQuery et React
La différence fondamentale entre les 2 librairies

C’est pour ça que React connait un succès sans cesse grandissant depuis 2013, et qu’il est désormais utilisé dans la majorité des applications web modernes.

Information

L’équipe des contributeurs WordPress a naturellement opté pour React pour réaliser l’éditeur de blocs et pour entamer les travaux de modernisation de l’interface d’administration de WordPress.

React et l’approche par composants

Jetons maintenant un œil à React : l’approche est complètement différente. Cette fois-ci le but est de créer des composants, qui fonctionnent en autarcie les uns vis-à-vis des autres.

Une application est donc découpée en plusieurs composants qui peuvent partager des données mais possèdent leurs propres fonctions et valeurs.

Voici un exemple type de composant React :

JSX
task.js

Un composant React, c’est au final ni plus ni moins qu’une fonction JS qui retournera du HTML.

Comme vous pouvez le voir, on assigne la fonction toggleTask directement sur le onClickde chaque tâche, comme on le faisait dans les premières années de Javascript !

La première grosse différence est le fait que contrairement à jQuery, on arrête de cibler à tout va des éléments via le sélecteur $('.quelquechose').

Ensuite, le composant gère à la fois ses données, sa logique métier (le code JS) mais en plus le rendu du composant en HTML, dans le return() de la fonction.

Chaque composant jouit d’une totale indépendance vis-à-vis du reste de l’application.

L’avantage, c’est que c’est React qui gère ensuite la mise à jour de ces composants dans le DOM, pas vous. Ainsi, si la liste des tâches envoyée à ce composant venait à changer, React relancera automatiquement le rendu de ce composant.

Enfin, pour communiquer avec le serveur, on peut envoyer des requêtes Ajax via l’API REST de WordPress pour lire et écrire les données. Et le tour est joué !

Information

React est donc la technologie idéale pour créer un éditeur de blocs que l’on peut manipuler en temps réel.

Attention

Passer de jQuery à React, c’est changer entièrement de logique, et parfois c’est un peu déroutant. Mais ne vous inquiétez pas, on s’y fait vite et ensuite, on se demande comment on faisait sans !

Jusqu’ou ira la part de JS dans WordPress ?

Si on jette un œil au répertoire Gutenberg sur Github, on observe que le JS (+ Typescript) occupe plus de 80% des parts des technologies utilisées par l’éditeur de blocs :

La répartition des technologies web dans le projet Gutenberg. Sur l podium : 60,6% de JS et 20.8% de TypeScript.
Gutenberg c’est plus de 80% de JavaScript

TypeScript est une version de JavaScript avec une prise en charte des types de données, et créé par Microsoft. C’est un métalangage qui a besoin d’être compilé.

On n’en utilisera pas dans la formation car avec les surcouches de WordPress, on n’en aura pas besoin. Mais c’est une bonne pratique lorsque vous créez une application web de toutes pièces.

Conseil

Aucun doute sur les tendances : le JS va prendre de plus en plus de place dans WordPress.


Dans ce cours, on a vu qu’il n’y avait pas besoin d’être un expert JS pour se lancer dans cette formation, mais on a vu également que le JS était en train de s’imposer

Cette introduction à Gutenberg est maintenant terminée. Dans le prochain chapitre, on passe au concret ! On va notamment préparer notre environnement pour créer nos blocs.

4

Questions, réponses et commentaires

  1. Nicolas Germain

    Le 15 octobre 2019

    Bonjour,
    erreur 404 sur cette page avec https://capitainewp.io/formations/developper-avec-reactjs/

    1. Maxime BJ

      Le 15 octobre 2019

      Merci je corrige !

  2. SAYAGH

    Le 28 juin 2021

    salut, je suis un dev vue.js plutot nuxt.js
    est ce que ca poserait pas probleme si j’utilise ce dernier pour mes projet.
    merci d’avance votre travaille et merveilleux

    1. Maxime BJ

      Le 28 juin 2021

      Comme tu te bases sur une plateforme existante (Gutenberg) tu n’as pas le choix de la technologie, il faudra impérativement dev en React. Cela dit, les langages se ressemblent beaucoup et tu devrais t’adapter très facilement. De plus, WordPress approche sa surcouche pour simplifier les choses, donc ça sera encore plus simple.

Laisser un commentaire