際際滷

際際滷Share a Scribd company logo
Drupal, Storybook e SDC
The Book Is No Longer on the Table
1
Enrico Sato
Drupal Frontend Developer @ SparkFabrik
Drupal.org: www.drupal.org/u/enricosato
LinkedIn: www.linkedin.com/in/enricosato/
drupal.slack.com: EnricoSato
@enricosato
3
Componenti
Nello sviluppo frontend un componente 竪 parte di una
pagina o di unapplicazione.
 ISOLATO
 RIUTILIZZABILE
 COMPONIBILE
 MANUTENIBILE
4
Design
System
De鍖nisce quali sono e come sono i componenti UI di
unapplicazione.
Perch辿 utilizzare un Design System?
 Aiuta a rendere coerenti i componenti tra loro;
 Aiuta a strutturare il percorso di sviluppo;
5
Componenti
+
Drupal
=
SDC
Single Directory Components (SDC)
Limplementazione utilizzata nel core di Drupal per lo
sviluppo di componenti.
Singola directory presente in un modulo o in un tema che
contiene tutto il necessario per rappresentare e
visualizzare un componente: HTML (twig), CSS / JS.
Storia:
 Modulo contrib dal 2022;
 Integrato nel core come modulo sperimentale v. 10.1
(giugno 2023);
 Stabile core v. 10.3 (giugno 2024);
6
E prima?
CORE
 Macro e librerie;
MODULI CONTRIB:
 UI Pattern 1.x;
 Single File components;
 Components!;
 Component Libraries: Components;
Avere SDC nel core di Drupal permetter di avere un
supporto pi湛 ampio da parte della community!
7
Nessuna card e nessun pulsante
verranno maltrattati oggi.
8
SDC 竪
pronto?
Raccontiamo la storia di un progetto
complesso e di come abbiamo messo
alla prova SDC.
9
Il nostro
progetto
 Piattaforma editoriale con costruzione
delle singole pagine a elementi;
 Ogni elemento deve avere varianti (colori,
layout) editoriali;
 Elementi annidati;
 Design system ben de鍖nito, serve un
tool per documentare;
 Possibilit di riutilizzare il Design
System;
 Lighthouse approved;
10
Tema 竪 linsieme dei 鍖les che de鍖niscono laspetto e lo
stile visivo di unapplicazione Drupal.
Organizzazione dispersiva:
 Markup - templates;
 Style / JS - CSS / SCSS / DIST;
 Assets gra鍖ci - images;
Problemi:
 Sviluppo a componenti risulta complesso;
 Dif鍖cile da mantenere;
 Rischio di duplicare;
Organizzare!
11
SDC ci obbliga ad organizzare i componenti in directory
contenenti tutto il necessario per de鍖nire quellelemento.
Contiene o richiama ci嘆 che serve:
 Creazione automatica libreria (鍖le CSS / JS);
 Utilizzare librerie esterne (libraryOverrides);
Tutto ci嘆 che riguarda un determinato componente viene
gestito in un unico luogo (Principio di Singola
responsabilit).
Quella directory nel nome
12
Solo dove
servono
Non pu嘆 essere tutto suddiviso a componenti!
Problema: come utilizzare elementi comuni necessari nei
componenti?
13
Il nostro
approccio
occorre rispondere alla domanda dove va utilizzato?
 Elementi BASE (styleguide: colori, font)
 Elementi GLOBALI (griglia)
 Elementi SPECIFICI (componenti)
Suddivisione rigorosa tra questi elementi!
14
Organizzazione di un tema Drupal con SDC
BASE
SPECIFICI
GLOBALI
15
Il Design System potrebbe richiedere pattern di componenti simili tra loro.
Duplicare rischia di essere la strada pi湛 facile!
SDC ci aiuta:
 鍖le *.component.yml permette di dichiarare le propriet;
 le propriet possono essere varianti (colori, dimensioni, layout);
 WIP: idea di propriet speci鍖ca: Add component variants to SDC;
 le varianti di aspetto possono essere gestite editorialmente;
Varianti, non duplicati!
16
Varianti semplici
17
Varianti layout
18
Performance SDC carica le proprie librerie solo quando un elemento
竪 in pagina.
 Suddivisione rigorosa degli assets;
 Evitare duplicati;
 Richiamare librerie esterne solo dove richiesto;
Possiamo evitare codice CSS/JS inutilizzato!
19
Documenta!
Questo nuovo progetto lo documentiamo meglio
Richiesto un sistema per
 Documentare visivamente il Design System;
 Esplorare i singoli componenti;
 Veri鍖care come si adatta cambiando il contenuto;
Un regalo per il tuo futuro
20
Strumento open source per costruire,
testare e documentare componenti UI in
modo isolato.
 Permette di vedere i singoli elementi
in isolamento (storie);
 Possibile esplorare i vari stati e
varianti di ciascun componente;
 Addons di base (Controls, Viewport,
Background, Measure) e Centinaia di
Addons aggiuntivi (accessibilit, test
regressione);
Storybook
21
Perch辿 ci
piace
 Flessibile nell'organizzazione delle storie;
 Personalizzabile, anche nellaspetto;
 Integrazione con Drupal - modulo dedicato;
 Integrato con SDC - ogni componente pu嘆 avere (o
non avere) una sua storia;
22
Tutto 竪 pronto
TECNOLOGIA ORGANIZZAZIONE DOCUMENTAZIONE
SDC Gestione asset Storybook
23
 si parte!
Costruiamo ci嘆 che ci
serve per fare data
entry
Entit Drupal SDC
Ogni SDC rappresenta
unentit di Drupal
Storybook
Il risultato lo portiamo
su Storybook
(Thats the way I like it)
24
Non funziona!
 Organizzare SDC in base alle entit di
Drupal;
 Rappresentare su Storybook la
complessit delle entit di Drupal;
 La documentazione rischia di essere
posticipata;
 Dif鍖cile rendere il Design System
riutilizzabile;
25
Raro esemplare di Drupalis frontendus developerus intento nella risoluzione di un problema.
26
Cos竪
Storybook? Storybook is a frontend workshop for building UI
components and pages in isolation. It helps you
DEVELOP and share hard-to-reach states and edge
cases without needing to run your whole app.
Thousands of teams use it for UI development, testing,
and documentation. It's open source and free.
https://storybook.js.org/docs
Un passo indietro
27
 si ri-parte!
Design System SDC Storybook
(Thats the way Ill like it)
Drupal
28
Lanalisi del Design System ci dice quali sono i
componenti necessari;
SDC ci permette di trasformare in codice il Design
System
Le propriet di SDC ci obbligano a de鍖nire quali sono i
dati che ci servono e come ci servono:
 Titolo = stringa;
 Variante = booleano;
 Link (titolo, url, target) = array;
Ci serve un tool di sviluppo!
Design
System
SDC Storybook Drupal
29
Non solo documentazione!
Ogni storia pu嘆 simulare lutilizzo di un determinato
componente fornendo i dati necessari:
 Le singole storie ci permettono lo sviluppo dei
componenti in isolamento;
 Sfruttiamo gli addons (Controls, Viewport,
Background, Measure);
 Unica o pi湛 storie per gestire varianti e
annidamenti;
 Facile test al variare dei contenuti;
Design
System
SDC Storybook Drupal
30
Qualsiasi entit pu嘆 essere la struttura dati di un SDC,
basta rispettare le propriet.
Design
System
SDC Storybook Drupal
31
Vantaggi
Parallelizzare / anticipare / validare
 Frontend e theming pu嘆 essere
parallelizzato e/o asincrono;
 Storybook pu嘆 essere uno step di
validazione;
Portabilit / scalabilit
 Gli elementi del Design System
diventano oggetti;
 Un tema di Drupal pu嘆 diventare un
base theme estendibile;
 Modi鍖che e nuovi componenti
disponibili ovunque;
Frontend indipendente dal CMS
 Il frontend 竪 sviluppato in modo
autonomo, senza dipendenze dalle
entit di Drupal;
 Diversi tipi di entit possono essere
rappresentate dallo stesso SDC;
32
 Partito come sperimentale, diversi cambiamenti;
 Poca documentazione;
 Integrazione con Storybook non sempre
performante;
Non 竪 stato sempre facile
33
 complicato astrarre le entit di Drupal!
Non 竪 stato sempre facile
34
SDC piace
proprio a
tutti
ATTENZIONE
La prossima slide contiene del codice PHP.
Si sconsiglia la visione ad un pubblico pi湛 sensibile.
In fase di sviluppo di logica potrebbe
essere necessario rigenerare
componenti (es. Ajax callback)
 Aggiungere HTML
direttamente nel codice;
 Duplicazione codice, prono
errori;
 Dif鍖cile manutenzione!
35
Backend
// Dati per l'avviso
$type = 'warning';
$title = 'Attenzione!';
$message = 'Questo 竪 un messaggio di avviso importante.';
// Genera il markup HTML
$output = '<div class="alert alert-' .
htmlspecialchars($type) . '">';
$output .= '<strong>' . htmlspecialchars($title) .
'</strong> ' . htmlspecialchars($message);
$output .= '</div>';
// Stampa l'avviso
print $output;
36
 SDC permette di richiamare
un componente in un render
array;
 Non serve scrivere markup;
 Facilmente riutilizzabile e
mantenibile;
Documentazione:
https://www.drupal.org/docs/develop/theming-drupal/
using-single-directory-components/using-your-new-
single-directory-component#s-using-your-compone
nt-through-a-render-array
SDC API
$render_array = [
'#type' => 'component',
'#component' => 'sdc_demo:alert',
'#props' => [
'type' = 'warning';
'title' = 'Attenzione!';
'message' = 'Questo 竪 un messaggio di avviso
importante.';
],
];
BACKEND APPROVED!
37
La famiglia
cresce
 SDC Display - Permette ai Site Builders di utilizzare i
componenti dal Display delle entit;
 SDC Block - Permette di inserire un componente
tramite i blocchi (core block layout, layout builder)
 SDC Styleguide - Fornisce un'interfaccia rapida per
testare i componenti single-directory senza creare
contenuti sul sito.
Modules that extend Single-Directory Components
SDC 竪 pronto?
SDC 竪 pronto!
40
Docs:
 Using Single-Directory Components
Articoli:
 SDC in Drupal core
 Component-Based Design Using Single Directory Components (SDC) in
Drupal
 Modules that extend Single-Directory Components
 Your Drupal Site Needs a Storybook Design System
 The New Storybook Module for Drupal
Links utili
41
Chapter 1 - Setting Up a Local Environment

Chapter 3 - How Drupal Renders an HTML Page
Chapter 4 - Mapping the Design to Drupal Components

Chapter 11 - Single Directory Components

Chapter 15 - Building a Decoupled Frontend
Learn more
Una lettura interessante
Siamo una tech company di engineers,
developers e designers, capace di
accompagnare passo passo i clienti
nellera CLOUD NATIVE,
con un approccio agile e pragmatico.
Ci impegniamo per lOPEN SOURCE
e ne abbracciamo la 鍖loso鍖a nelle nostre
pratiche interne.
TECNOLOGIA,
STRATEGIA E METODO
42

More Related Content

Talks on my machine: Drupal, Storybook e SDC

  • 1. Drupal, Storybook e SDC The Book Is No Longer on the Table 1
  • 2. Enrico Sato Drupal Frontend Developer @ SparkFabrik Drupal.org: www.drupal.org/u/enricosato LinkedIn: www.linkedin.com/in/enricosato/ drupal.slack.com: EnricoSato @enricosato
  • 3. 3 Componenti Nello sviluppo frontend un componente 竪 parte di una pagina o di unapplicazione. ISOLATO RIUTILIZZABILE COMPONIBILE MANUTENIBILE
  • 4. 4 Design System De鍖nisce quali sono e come sono i componenti UI di unapplicazione. Perch辿 utilizzare un Design System? Aiuta a rendere coerenti i componenti tra loro; Aiuta a strutturare il percorso di sviluppo;
  • 5. 5 Componenti + Drupal = SDC Single Directory Components (SDC) Limplementazione utilizzata nel core di Drupal per lo sviluppo di componenti. Singola directory presente in un modulo o in un tema che contiene tutto il necessario per rappresentare e visualizzare un componente: HTML (twig), CSS / JS. Storia: Modulo contrib dal 2022; Integrato nel core come modulo sperimentale v. 10.1 (giugno 2023); Stabile core v. 10.3 (giugno 2024);
  • 6. 6 E prima? CORE Macro e librerie; MODULI CONTRIB: UI Pattern 1.x; Single File components; Components!; Component Libraries: Components; Avere SDC nel core di Drupal permetter di avere un supporto pi湛 ampio da parte della community!
  • 7. 7 Nessuna card e nessun pulsante verranno maltrattati oggi.
  • 8. 8 SDC 竪 pronto? Raccontiamo la storia di un progetto complesso e di come abbiamo messo alla prova SDC.
  • 9. 9 Il nostro progetto Piattaforma editoriale con costruzione delle singole pagine a elementi; Ogni elemento deve avere varianti (colori, layout) editoriali; Elementi annidati; Design system ben de鍖nito, serve un tool per documentare; Possibilit di riutilizzare il Design System; Lighthouse approved;
  • 10. 10 Tema 竪 linsieme dei 鍖les che de鍖niscono laspetto e lo stile visivo di unapplicazione Drupal. Organizzazione dispersiva: Markup - templates; Style / JS - CSS / SCSS / DIST; Assets gra鍖ci - images; Problemi: Sviluppo a componenti risulta complesso; Dif鍖cile da mantenere; Rischio di duplicare; Organizzare!
  • 11. 11 SDC ci obbliga ad organizzare i componenti in directory contenenti tutto il necessario per de鍖nire quellelemento. Contiene o richiama ci嘆 che serve: Creazione automatica libreria (鍖le CSS / JS); Utilizzare librerie esterne (libraryOverrides); Tutto ci嘆 che riguarda un determinato componente viene gestito in un unico luogo (Principio di Singola responsabilit). Quella directory nel nome
  • 12. 12 Solo dove servono Non pu嘆 essere tutto suddiviso a componenti! Problema: come utilizzare elementi comuni necessari nei componenti?
  • 13. 13 Il nostro approccio occorre rispondere alla domanda dove va utilizzato? Elementi BASE (styleguide: colori, font) Elementi GLOBALI (griglia) Elementi SPECIFICI (componenti) Suddivisione rigorosa tra questi elementi!
  • 14. 14 Organizzazione di un tema Drupal con SDC BASE SPECIFICI GLOBALI
  • 15. 15 Il Design System potrebbe richiedere pattern di componenti simili tra loro. Duplicare rischia di essere la strada pi湛 facile! SDC ci aiuta: 鍖le *.component.yml permette di dichiarare le propriet; le propriet possono essere varianti (colori, dimensioni, layout); WIP: idea di propriet speci鍖ca: Add component variants to SDC; le varianti di aspetto possono essere gestite editorialmente; Varianti, non duplicati!
  • 18. 18 Performance SDC carica le proprie librerie solo quando un elemento 竪 in pagina. Suddivisione rigorosa degli assets; Evitare duplicati; Richiamare librerie esterne solo dove richiesto; Possiamo evitare codice CSS/JS inutilizzato!
  • 19. 19 Documenta! Questo nuovo progetto lo documentiamo meglio Richiesto un sistema per Documentare visivamente il Design System; Esplorare i singoli componenti; Veri鍖care come si adatta cambiando il contenuto; Un regalo per il tuo futuro
  • 20. 20 Strumento open source per costruire, testare e documentare componenti UI in modo isolato. Permette di vedere i singoli elementi in isolamento (storie); Possibile esplorare i vari stati e varianti di ciascun componente; Addons di base (Controls, Viewport, Background, Measure) e Centinaia di Addons aggiuntivi (accessibilit, test regressione); Storybook
  • 21. 21 Perch辿 ci piace Flessibile nell'organizzazione delle storie; Personalizzabile, anche nellaspetto; Integrazione con Drupal - modulo dedicato; Integrato con SDC - ogni componente pu嘆 avere (o non avere) una sua storia;
  • 22. 22 Tutto 竪 pronto TECNOLOGIA ORGANIZZAZIONE DOCUMENTAZIONE SDC Gestione asset Storybook
  • 23. 23 si parte! Costruiamo ci嘆 che ci serve per fare data entry Entit Drupal SDC Ogni SDC rappresenta unentit di Drupal Storybook Il risultato lo portiamo su Storybook (Thats the way I like it)
  • 24. 24 Non funziona! Organizzare SDC in base alle entit di Drupal; Rappresentare su Storybook la complessit delle entit di Drupal; La documentazione rischia di essere posticipata; Dif鍖cile rendere il Design System riutilizzabile;
  • 25. 25 Raro esemplare di Drupalis frontendus developerus intento nella risoluzione di un problema.
  • 26. 26 Cos竪 Storybook? Storybook is a frontend workshop for building UI components and pages in isolation. It helps you DEVELOP and share hard-to-reach states and edge cases without needing to run your whole app. Thousands of teams use it for UI development, testing, and documentation. It's open source and free. https://storybook.js.org/docs Un passo indietro
  • 27. 27 si ri-parte! Design System SDC Storybook (Thats the way Ill like it) Drupal
  • 28. 28 Lanalisi del Design System ci dice quali sono i componenti necessari; SDC ci permette di trasformare in codice il Design System Le propriet di SDC ci obbligano a de鍖nire quali sono i dati che ci servono e come ci servono: Titolo = stringa; Variante = booleano; Link (titolo, url, target) = array; Ci serve un tool di sviluppo! Design System SDC Storybook Drupal
  • 29. 29 Non solo documentazione! Ogni storia pu嘆 simulare lutilizzo di un determinato componente fornendo i dati necessari: Le singole storie ci permettono lo sviluppo dei componenti in isolamento; Sfruttiamo gli addons (Controls, Viewport, Background, Measure); Unica o pi湛 storie per gestire varianti e annidamenti; Facile test al variare dei contenuti; Design System SDC Storybook Drupal
  • 30. 30 Qualsiasi entit pu嘆 essere la struttura dati di un SDC, basta rispettare le propriet. Design System SDC Storybook Drupal
  • 31. 31 Vantaggi Parallelizzare / anticipare / validare Frontend e theming pu嘆 essere parallelizzato e/o asincrono; Storybook pu嘆 essere uno step di validazione; Portabilit / scalabilit Gli elementi del Design System diventano oggetti; Un tema di Drupal pu嘆 diventare un base theme estendibile; Modi鍖che e nuovi componenti disponibili ovunque; Frontend indipendente dal CMS Il frontend 竪 sviluppato in modo autonomo, senza dipendenze dalle entit di Drupal; Diversi tipi di entit possono essere rappresentate dallo stesso SDC;
  • 32. 32 Partito come sperimentale, diversi cambiamenti; Poca documentazione; Integrazione con Storybook non sempre performante; Non 竪 stato sempre facile
  • 33. 33 complicato astrarre le entit di Drupal! Non 竪 stato sempre facile
  • 34. 34 SDC piace proprio a tutti ATTENZIONE La prossima slide contiene del codice PHP. Si sconsiglia la visione ad un pubblico pi湛 sensibile.
  • 35. In fase di sviluppo di logica potrebbe essere necessario rigenerare componenti (es. Ajax callback) Aggiungere HTML direttamente nel codice; Duplicazione codice, prono errori; Dif鍖cile manutenzione! 35 Backend // Dati per l'avviso $type = 'warning'; $title = 'Attenzione!'; $message = 'Questo 竪 un messaggio di avviso importante.'; // Genera il markup HTML $output = '<div class="alert alert-' . htmlspecialchars($type) . '">'; $output .= '<strong>' . htmlspecialchars($title) . '</strong> ' . htmlspecialchars($message); $output .= '</div>'; // Stampa l'avviso print $output;
  • 36. 36 SDC permette di richiamare un componente in un render array; Non serve scrivere markup; Facilmente riutilizzabile e mantenibile; Documentazione: https://www.drupal.org/docs/develop/theming-drupal/ using-single-directory-components/using-your-new- single-directory-component#s-using-your-compone nt-through-a-render-array SDC API $render_array = [ '#type' => 'component', '#component' => 'sdc_demo:alert', '#props' => [ 'type' = 'warning'; 'title' = 'Attenzione!'; 'message' = 'Questo 竪 un messaggio di avviso importante.'; ], ]; BACKEND APPROVED!
  • 37. 37 La famiglia cresce SDC Display - Permette ai Site Builders di utilizzare i componenti dal Display delle entit; SDC Block - Permette di inserire un componente tramite i blocchi (core block layout, layout builder) SDC Styleguide - Fornisce un'interfaccia rapida per testare i componenti single-directory senza creare contenuti sul sito. Modules that extend Single-Directory Components
  • 40. 40 Docs: Using Single-Directory Components Articoli: SDC in Drupal core Component-Based Design Using Single Directory Components (SDC) in Drupal Modules that extend Single-Directory Components Your Drupal Site Needs a Storybook Design System The New Storybook Module for Drupal Links utili
  • 41. 41 Chapter 1 - Setting Up a Local Environment Chapter 3 - How Drupal Renders an HTML Page Chapter 4 - Mapping the Design to Drupal Components Chapter 11 - Single Directory Components Chapter 15 - Building a Decoupled Frontend Learn more Una lettura interessante
  • 42. Siamo una tech company di engineers, developers e designers, capace di accompagnare passo passo i clienti nellera CLOUD NATIVE, con un approccio agile e pragmatico. Ci impegniamo per lOPEN SOURCE e ne abbracciamo la 鍖loso鍖a nelle nostre pratiche interne. TECNOLOGIA, STRATEGIA E METODO 42