Costruire guide turistiche interattive con le Astro Islands

Costruire guide turistiche interattive con le Astro Islands

Scopri come le Astro Islands permettono di combinare contenuti Markdown statici con mappe interattive, widget di prenotazione, profili altimetrici e componenti dinamici.

Astro viene spesso descritto come un generatore di siti statici, ma questa è solo metà della storia.

Una delle sue funzionalità più potenti è la Islands Architecture, che permette di costruire pagine per lo più statiche in HTML aggiungendo componenti interattivi ricchi solo dove servono davvero.

Per blog di viaggio, guide escursionistiche e siti turistici questo è un approccio ideale.

Cos’è un’Island?#

Immagina una pagina così:

------------------------------------------------
Immagine hero
Articolo
Gallery
Informazioni sul percorso
Mappa interattiva
Widget di prenotazione
Articoli correlati
------------------------------------------------

La maggior parte della pagina viene renderizzata come HTML statico durante il build.

Solo la mappa e il widget di prenotazione diventano interattivi nel browser.

flowchart TD A[Contenuto Markdown] --> B[Build di Astro] B --> C[HTML statico] C --> D[Island Mappa Percorso] C --> E[Island Prenotazione]

Questo significa:

Mescolare Markdown e componenti#

Un tipico articolo di un tour potrebbe assomigliare a questo.

---
import RouteMap from "@/components/RouteMap";
import BookingWidget from "@/components/BookingWidget";
---
<Content />
<RouteMap
gpx="/tracks/lake-tour.gpx"
client:visible
/>
<BookingWidget
eventId="lake-tour-july"
client:load
/>

L’articolo vero e proprio proviene dal Markdown, mentre le sezioni interattive sono componenti React.

Mappe dei percorsi#

Le mappe interattive sono uno degli esempi migliori di Island.

Un componente RouteMap personalizzato può mostrare:

FunzionalitàDescrizione
Traccia GPXDisegna percorsi escursionistici o a piedi
DistanzaLunghezza totale del percorso
AltimetriaDislivello totale in salita e discesa
WaypointTappe e punti di interesse
ZoomNavigazione interattiva

Il resto dell’articolo rimane statico.

Profili altimetrici#

Un file GPX contiene informazioni sufficienti per generare un grafico altimetrico.

Altitudine
900m ────────────────╮
700m ───────╮ │
│ │
500m ───────╰────────╯────────
Distanza → 12,8 km

Questa visualizzazione viene calcolata interamente nel browser.

Widget di prenotazione#

La prenotazione interattiva non dovrebbe mai rallentare la pagina.

Invece di renderizzare tutto dinamicamente, Astro idrata solo il componente di prenotazione.

sequenceDiagram participant Utente participant Browser participant Worker participant Database Utente->>Browser: Clicca "Prenota" Browser->>Worker: POST /booking Worker->>Database: Verifica disponibilità Database-->>Worker: Disponibile Worker-->>Browser: URL di checkout

Tutto il resto della pagina rimane statico.

Idratazione lazy#

Astro permette a ogni Island di decidere quando deve caricarsi.

DirettivaComportamento
client:loadCaricamento immediato
client:idleAttende che il browser sia inattivo
client:visibleSi carica quando diventa visibile a schermo
client:onlyRenderizzato interamente lato client

Per le mappe posizionate verso il fondo di articoli lunghi, client:visible è di solito la scelta migliore.

<RouteMap
gpx="/tracks/mountain.gpx"
client:visible
/>

Guide turistiche con Astro#

Una pagina completa di guida turistica potrebbe combinare senza soluzione di continuità contenuti statici e interattivi.

Hero
Panoramica
Gallery
Dettagli del percorso
Mappa interattiva
Profilo altimetrico
Meteo
Prenotazione
FAQ
Articoli correlati
Sentiero di montagna
Sentiero di montagna

La maggior parte di queste sezioni viene generata durante il processo di build.

Solo i componenti che richiedono davvero JavaScript diventano Island.

Considerazioni finali#

La Islands Architecture di Astro incoraggia una filosofia semplice:

Mantieni i contenuti statici. Aggiungi JavaScript solo dove gli utenti hanno davvero bisogno di interazione.

Per i siti di viaggio questo si traduce in pagine che sono:

Invece di costruire un’intera Single Page Application, costruisci solo i pezzi interattivi che migliorano l’esperienza utente.

Licenza

CC BY-NC-SA 4.0 Licenza.

Articoli correlati