Astro es un framework basado en componentes que permite crear sitios web estáticos. Su principal ventaja es que solo entrega HTML, CSS y JavaScript cuando es necesario, reduciendo considerablemente el tamaño de los archivos enviados al cliente y mejorando el rendimiento del sitio.
Antes de comenzar, asegúrate de tener instalado Node.js en tu máquina. Puedes descargarlo desde nodejs.org.
Para instalar Astro, puedes usar el siguiente comando npm:
npm init astro@latest
Este comando te guiará a través de la configuración inicial del proyecto, permitiéndote elegir plantillas y configuraciones básicas.
Después de la instalación, tu proyecto tendrá una estructura similar a esta:
my-astro-site/
├── public/
│ └── favicon.ico
├── src/
│ ├── components/
│ ├── layouts/
│ ├── pages/
│ │ └── index.astro
│ └── styles/
├── package.json
└── astro.config.mjs
Las páginas en Astro se crean dentro del directorio src/pages
. Cada archivo .astro
dentro de este directorio representa una página en tu sitio.
Crea un archivo llamado about.astro
en src/pages
:
---
title: "About Us"
description: "Learn more about our team and mission."
---
<html>
<head>
<title>{title}</title>
</head>
<body>
<h1>{title}</h1>
<p>{description}</p>
</body>
</html>
Astro automáticamente configura rutas basadas en la estructura de archivos dentro del directorio pages
. Por ejemplo, src/pages
estará disponible en /about.
/about
.astro
Astro permite usar componentes para crear interfaces modulares y reutilizables. Puedes crear componentes en el directorio src/components
.
Crea un archivo Header.astro
en src/components
:
---
const title = "Welcome to My Astro Site";
---
<header>
<h1>{title}</h1>
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
</nav>
</header>
Ahora puedes usar el componente Header
en tus páginas:
---
import Header from '../components/Header.astro';
---
<html>
<head>
<title>Home</title>
</head>
<body>
<Header />
<main>
<h2>Welcome to the homepage!</h2>
<p>This is the main content of the page.</p>
</main>
</body>
</html>
Astro permite utilizar CSS de varias formas: archivos CSS globales, CSS en línea, y módulos CSS.
Crea un archivo CSS en src/styles/global.css
:
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background-color: #f0f0f0;
}
Incluye este archivo en tu proyecto editando src/pages/_template.astro
(o el archivo equivalente en tu estructura):
---
import '../styles/global.css';
---
<html>
<head>
<link rel="stylesheet" href="../styles/global.css">
</head>
<body>
<slot />
</body>
</html>
También puedes añadir CSS directamente en los componentes:
<style>
header {
background-color: #333;
color: white;
padding: 1rem;
}
nav a {
color: white;
margin: 0 1rem;
text-decoration: none;
}
</style>
<header>
<h1>{title}</h1>
<nav>
<a href="/">Home</a>
<a href="/about">About</a>
</nav>
</header>
Coloca tus imágenes y otros archivos estáticos en el directorio public
. Estos archivos estarán disponibles en la raíz del sitio web.
Por ejemplo, si tienes una imagen logo.png
en public
, puedes acceder a ella en tu HTML:
<img src="/logo.png" alt="Logo">
El archivo de configuración astro.config.mjs
permite personalizar el comportamiento de Astro.
import { defineConfig } from 'astro/config';
export default defineConfig({
site: 'https://my-astro-site.com',
build: {
outDir: 'dist',
},
integrations: [
// Integraciones como Tailwind, MDX, etc.
],
});
Una vez que tu sitio esté listo, puedes generarlo y desplegarlo en cualquier servicio de hosting estático.
Usa el comando de construcción de Astro:
npm run build
Esto generará los archivos estáticos en el directorio dist
.
Puedes desplegar los archivos generados en servicios como Vercel, Netlify, GitHub Pages, entre otros. La configuración específica dependerá del servicio que elijas.
Astro es un potente framework para la creación de sitios web estáticos que ofrece un rendimiento óptimo y una experiencia de desarrollo flexible. Con su enfoque modular y su compatibilidad con varios componentes de frontend, Astro se convierte en una excelente opción para desarrolladores que buscan construir sitios rápidos y eficientes. ¡Ahora estás listo para empezar a construir tu propio sitio con Astro!
Jorge García
Fullstack developer