Dopo tanti anni riesci a riconoscere se una applicazione oppure un servizio sono validi e/ interessanti in breve tempo. Lo stesso vale a volte per alcuni film e soprattutto per alcuni videogiochi.
In questo caso parliamo di un qualcosa che sembra portare l’evoluzione delle pagine web ad un passo indietro, ovvero passare dal dinamico allo statico.
Ho installato Gatsby ed un solo plugin (ho letto due brevi tutorial). Ho lanciato la build del sito ed ho successivamente caricato il tutto via ftp (questa è stata la fase al momento più lunga e noiosa)
Ed ecco Rlieh statico: 4400 post in una sola pagina, 4400 cartelle (1.6MB di Summary contenente un riassunto di tutti i post)
Gatsby ti crea l’ambiente, il plugin si interessa a estrarre tutti i dati relativi ad un blog, con post, categorie, autori e tag e genera il suo store di dati in GraphQL (su cui mi soffermerò in un secondo momento).
Praticamente mentre prima occorreva esportare tutti i post in xml o csv e reimportarli in un altro CMS (o piattaforma per blog) con o senza permessi, ora uno script fa tutto da solo e velocemente. E i gradi di libertà che si hanno grazie a GraphQL sono spaventosi. Nel template di base di un post inserisci le informazioni che ti servono.
Una volta importati i post basta creare un template che mostri:
- una homepage contenente un estratto degli ultimi post
- un template minimale dedicato ad un post
- eventuali template per altri pagine statiche
Vuoi aggiungere un campo in un secondo momento? Devi solo aggiungerlo alla query di GraphQL, lato markup puoi anche attivare il conditional rendering senza dover toccare una riga di codice.
Cosa rimane da gestire? Essendo tutto statico (Gatsby genera un bundle contenente HTML, JS e CSS necessario), non esiste una interazione col server, quindi non è possibile nativamente commentare un post.
Open points
- devo investigare: la ricerca e o i filtri (ma prevedo sia una attività banale).
- plugin e/o widget, oppure avere statistiche sulla navigazione
- come editare post esistenti? Al momento manca un backoffice per gli amministratori (manca proprio la multi utenza). Ma al contempo, come il buon Dread sponsorizza da tempo, tutto può essere editato in markdown o anche meglio in MDX, laddove si volesse integrare contenuti in formati diversi (tipo una galleria con uno slider, lazy loading e popup modale)
- paginazione e ordinamento per la lista dei post
Boh. Un giorno in questo eterno oscillare fra miii-super-dinamico e mii-super-static, magari l’onda collasserà in qualcosa di medio che funziona e fa quello che serve?
WordPress era super complicato, e nessuno si è fatto un account. Gatsby muove la complicazione sul tuo computer (quanto è grossa `node_modules`?), e nessuno può fare un account. Mi sembra uno di quei casi in cui invece di partire dai requisiti si parte da una soluzione, e poi si va dritti.
Ma questo era il tema di un ulteriore post!
Multi-utenza, editing e ACL (sicurezza in generale) sono le funzionalità che già da un po’ di tempo vengono gestite dai CMS headless (Contentul, NetlifyCMS, Strapi, etc etc).
Considerando le attuali dipendenze di primo livello node_modules in locale occupa circa 235MB, che sono niente rispetto a progetti medi (a volte si superano i GB). Utilizzando yarn è addirittura possibile ottimizzare la cache mantenendo i pacchetti zippati.