Sélectionner une page


Je suis un développeur qui a récemment commencé à développer avec Gutenberg. Il y a un certain nombre d’avantages et de fonctionnalités incroyables, mais il y a aussi des tonnes d’inconvénients, d’incohérences et de documentation absolument terrible et obsolète.

L’un des pires aspects de Gutenberg du point de vue d’un développeur était la validation de bloc. Imaginez le scénario suivant. Je crée un bloc basé sur JavaScript personnalisé (non dynamique) et un éditeur CMS ajoutera des milliers de pages au bloc. Que faire si ou quand j’ai besoin de mettre à jour le balisage du bloc?

Par défaut, tous les blocs sont invalidés et n’apparaîtront pas dans le front-end du site. L’éditeur du CMS devrait accéder à des milliers de pages et cliquer manuellement sur le bouton qui restaurera le bloc.

L’amortissement en bloc a été suggéré pour résoudre ce problème. Cependant, l’API est mal documentée, déroutante et, avec plus de quelques dévaluations, ne semble pas être le long terme à attendre.

Ne devrait-il pas y avoir un moyen pour les développeurs de blocs de désactiver le processus de validation ou un moyen global de restaurer les blocs?

P J

Vous ne retenez absolument rien, PJ. Bien que beaucoup de choses soient un peu plus techniques que ce que j’aime habituellement traiter ici à la taverne, j’ai décidé de contacter Riad Benguella, l’un des principaux développeurs de Gutenberg, pour en savoir plus sur la situation.

Avant d’entrer dans sa réponse, j’ai examiné un aspect de votre question. Il y a des moments où les développeurs abandonnent l’ancien balisage et doivent passer à quelque chose de nouveau. Cependant, cela ne devrait pas arriver souvent. En général, c’est un signe de mauvaise architecture que le code HTML nécessite une révision régulière. Cela conduit également à d’autres problèmes, par ex. B. si un tiers est incapable de maintenir les changements stylistiques.

Lorsque vous développez des blocs ou des applications qui émettent du code frontal, vous devez réfléchir à son apparence actuelle et dans 10 ans. Que faire si un utilisateur ajoute du CSS personnalisé pour formater votre bloc et que la structure HTML du bloc a changé? Selon eux, votre mise à jour en bloc a endommagé leur site. Il en va de même pour un autre plugin qui étend votre plugin d’une manière ou d’une autre.

Demandez à un rédacteur de sujet à quel point il est frustrant lorsque Gutenberg / WordPress modifie sa sortie de bloc. Bien qu’il se soit amélioré au cours des dernières années, les blocs de style pour l’éditeur et le front-end ont souvent été un cauchemar de maintenance.

En tant que développeur, j’ai toujours essayé de reconsidérer les véritables ramifications de ces changements du point de vue de l’utilisateur. Cela devrait être fait dès le premier jour, et non après la publication de votre projet.

Cela prolongera le début du projet en essayant simplement de le mettre entre les mains des utilisateurs. Un pas en arrière avant la publication aide ici. Éloignez-vous de l’ordinateur. Aller se promener. Pensez à l’architecture de votre projet et à son idéal sur le long terme.

«Pour les versions / mises à jour de blocs, c’est en effet l’un des domaines des API Gutenberg où nous avons dû faire des compromis architecturaux et nous avons choisi de préférer l’expérience utilisateur au développeur», a déclaré Benguella.

Quelle que soit votre méthode de développement, suivre l’approche de projet d’une expérience utilisateur d’abord vous aide à long terme.

«Pour bien comprendre le problème, il faut comprendre comment les blocs fonctionnent et sont manipulés», a déclaré Benguella. «Les instances de bloc sont un objet JSON, et l’interface utilisateur de l’éditeur manipule ce JSON, mais pour être rétrocompatible, pour garantir que le contenu de l’utilisateur est conservé dans le format le plus lisible et pour se conformer autant que possible aux normes du Web, l’éditeur de blocs ne sauvegarde pas l’objet JSON, mais une sérialisation HTML post_content. « 

Cette sérialisation est analysée et convertie en JSON lorsque l’éditeur recharge le contenu pour une édition ultérieure. Dans la phase finale de l’analyse, l’auteur du bloc doit décider comment enregistrer et analyser l’objet.

«Imaginez maintenant si un utilisateur modifiait le code HTML enregistré (sérialisation) et y mettait simplement du contenu aléatoire», a déclaré Benguella. «Le bloc peut ne pas être en mesure d’analyser correctement le HTML car il ne répond pas aux attentes (telles que définies par l’auteur du bloc). Par conséquent, il n’est actuellement pas possible de recréer l’objet JSON pour le manipuler. « 

Dans ce cas, l’éditeur de blocs fournit à l’utilisateur une interface pour prendre une décision éclairée. Vous pouvez essayer de forcer le bloc JSON ou de le convertir en un bloc HTML ou classique.

Sortie de bloc non valide dans l'éditeur WordPress.
Bloc non valide après la modification du balisage.

Le même type d’invalidation peut se produire lorsqu’un développeur de plugin met à jour son bloc. Au lieu de changer le HTML enregistré, cependant, le développeur a changé les «attentes» du bloc et a changé la façon dont il a été enregistré et analysé.

«C’est pourquoi nous demandons aux développeurs de blocs de fournir des dévaluations de bloc qui sont l’ancien balisage du même bloc», a déclaré Benguella. «L’amortissement peut également être considéré comme une source alternative valable pour le même bloc. Cela permet à l’éditeur d’analyser l’ancien balisage lors de son chargement et de sauvegarder le nouveau balisage lorsque le bloc est mis à jour. « 

WordPress a Bloquer la documentation d’expiration. Cependant, ce n’est pas complet. La meilleure source pour voir de vraies dévaluations est de regarder à travers Gutenberg Bibliothèque de blocs. Les blocs obsolètes ont un deprecated.js Déposer.

Benguella a déclaré que ce système peut être frustrant pour les auteurs de blocs. Cela est particulièrement évident dans un environnement de développement lorsque des modifications sont apportées. Cela a conduit les développeurs à demander une méthode pour désactiver l’algorithme de validation.

« C’est quelque chose que nous ne voulons pas fournir pour le moment car, comme expliqué ci-dessus, la validation est également importante si le balisage change pour toute autre raison (édition externe, éditeur différent, etc.) », a-t-il déclaré. «Cela peut entraîner une perte de contenu pour les utilisateurs sans qu’ils s’en aperçoivent. Actuellement, la sensibilisation des utilisateurs est préférable. « 

L’équipe a amélioré le système de validation au fil du temps, en incorporant de petits changements qui n’affectent pas l’état du bloc. Il y a aussi ticket ouvert pour améliorations à l’avenir.



Source link

Recent Posts