Por que escolhi Astro para meu site pessoal

#astro #framework #web

Quando decidi criar este site, avaliei várias opções: Next.js, Hugo, Gatsby e Astro. Neste artigo, explico por que o Astro foi a escolha certa para um site focado em conteúdo.

O problema com SPAs para blogs

Frameworks como React e Next.js são incríveis para aplicações interativas, mas para um blog eles enviam JavaScript desnecessário ao cliente. O Astro resolve isso com sua arquitetura de zero JS por padrão.

Islands Architecture

O conceito de Islands Architecture permite que apenas os componentes interativos carreguem JavaScript. O restante da página é HTML puro.

---
// Este componente NÃO envia JS ao cliente
const titulo = "Conteúdo estático";
---
<h1>{titulo}</h1>

Content Collections

Uma das funcionalidades que mais gosto é o Content Collections. Ele valida o frontmatter dos seus arquivos Markdown com schemas tipados:

const blog = defineCollection({
  type: 'content',
  schema: z.object({
    title: z.string(),
    pubDate: z.coerce.date(),
    tags: z.array(z.string()),
  }),
});

Performance

O resultado é impressionante. Este site atinge score acima de 95 no Lighthouse sem nenhuma otimização manual.

Próximos passos

No próximo artigo, vou falar sobre como configurei o Docker para deploy. Se você ainda não leu, confira também meu primeiro post onde explico a motivação por trás deste blog.