Astro è un framework moderno pensato per la realizzazione di siti statici e ibridi ad alte prestazioni. Nato nel 2021, ha rapidamente guadagnato terreno grazie al suo approccio server-first e a un’architettura a isole che riduce drasticamente il peso del JavaScript distribuito. Questo modello consente di ottenere pagine rapide, ottimizzate per la SEO e facili da mantenere.
A differenza delle SPA che idratano l’intera interfaccia nel browser, Astro permette un’idratazione selettiva.
Solo i componenti interattivi vengono trasformati in JavaScript e resi attivi, mentre il resto della pagina resta statico. Questo concetto, noto come partial hydration, si basa sulle cosiddette ‘isole’.
---
// Esempio di isola
import Hero from '../components/Hero.astro';
---
<main>
<Hero client:visible />
</main>
Ogni componente può essere costruito in Astro oppure integrato da framework come React, Vue, Svelte. Questa compatibilità consente di riutilizzare codice esistente o di migrare progressivamente, senza dover ricostruire tutto da zero.
Dal punto di vista dello sviluppatore, Astro adotta una sintassi simile a HTML ma con alcune estensioni. I file .astro possono contenere script JavaScript racchiusi tra delimitatori ---
, e offrono lo scoping automatico per i CSS. La struttura del progetto è semplice e ordinata:
src/
├── components/
├── layouts/
└── pages/
Ogni file dentro pages/ diventa automaticamente una route. Ad esempio, src/pages/about.astro corrisponde a /about. Per gestire contenuti dinamici, si utilizzano file con nomi parametrizzati:
src/pages/blog/[slug].astro → /blog/titolo-articolo
All’interno di un componente Astro, è possibile accedere ai parametri così:
---
const { slug } = Astro.params;
---
<h1>Post: {slug}</h1>
Il meccanismo di rendering è altamente flessibile. Di default, Astro utilizza lo Static Site Generation, ma è possibile abilitare anche il rendering lato server o una modalità ibrida. Questo si configura nel file astro.config.mjs:
import { defineConfig } from 'astro/config';
export default defineConfig({
output: 'server', // oppure 'static' | 'hybrid'
});
I layout in Astro funzionano come template riutilizzabili. Possono includere header, footer e slot dove iniettare contenuti dinamici. Ecco un esempio base:
---
// src/layouts/Base.astro
const { pageTitle = 'Hello Hero Hubs!' } = Astro.props;
---
<html lang="en">
<head>
<title>{pageTitle}</title>
</head>
<body>
<slot />
</body>
</html>
E l’utilizzo in una pagina:
---
import Base from '../layouts/Base.astro';
---
<Base pageTitle="Superhero">
<h1>Benvenuti nel sito</h1>
</Base>
Astro è particolarmente indicato per siti orientati ai contenuti. L’integrazione con Markdown e la possibilità di definire collezioni tramite TypeScript consente di trattare contenuti statici come dati strutturati:
// src/content/config.ts
import { z, defineCollection } from 'astro:content';
const blog = defineCollection({
schema: z.object({
title: z.string(),
publishDate: z.date(),
tags: z.array(z.string())
}),
});
export const collections = {
blog,
};
Le collezioni supportano anche tipi personalizzati e validazione automatica. Se un campo obbligatorio manca, Astro blocca la build, evitando errori a runtime.
Per la gestione delle immagini, Astro mette a disposizione il pacchetto @astrojs/image, che permette ottimizzazioni automatiche:
---
import { Image } from '@astrojs/image/components';
import hero from '../assets/hero.jpg';
---
<Image src={hero} width={400} alt="Hero image" />
Il supporto per il data fetching è completo. È possibile recuperare dati da API REST o GraphQL, sia durante la build che in modalità SSR:
---
import { request, gql } from 'graphql-request';
const query = gql`
query {
posts {
title
content
}
}
`;
const { posts } = await request('https://example.com/graphql', query);
---
{posts.map(post => (
<article>
<h2>{post.title}</h2>
<p>{post.content}</p>
</article>
))}
Astro continua ad evolversi. Con la versione 4 sono state introdotte funzionalità sperimentali per il prerendering predittivo tramite Speculation Rules API, nuove opzioni per la gestione dei percorsi dinamici e un miglioramento delle regole di accessibilità tramite l’Astro Dev Toolbar.
In sintesi, Astro si rivela una soluzione potente e moderna per chi desidera costruire siti veloci, modulari e scalabili. Il suo ecosistema flessibile, la compatibilità con più framework e la capacità di gestire contenuti in modo strutturato lo rendono uno strumento particolarmente efficace per blog, documentazioni, landing page e portali editoriali.
Maggiorni informazioni: astro.build
Come possiamo aiutarti?
Contattaci e scrivi brevemente ciò di cui hai bisogno.
Sarai ricontattato nel più breve tempo possibile.
Se preferisci, puoi prenotare direttamente un appuntamento cliccando qui.