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

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.