Saltearse al contenido

Páginas

Las páginas son componentes de Astro que se encuentran en la subcarpeta src/pages/. Ellas son las responsables de manejar el enrutamiento, la carga de datos y el diseño general de cada página HTML de tu proyecto.

Astro es compatible con los siguientes tipos de archivos en el directorio src/pages/:

Astro aprovecha una estrategia de enrutamiento llamada enrutamiento basado en archivos. Cada archivo .astro en la carpeta src/pages se convierte en una página o un endpoint en tu proyecto de acuerdo a su ruta.

Un archivo puede generar múltiples páginas usando enrutamiento dinámico. Esto te permite crear páginas incluso si tu contenido está fuera del directorio especial /pages/, como en una colección de contenido o un CMS.

Lee más sobre enrutamiento en Astro

Escribe HTML estándar elementos <a> en tus páginas Astro para enlazar a otras páginas en tu sitio. Usa una ruta URL relativa a tu dominio raíz como enlace, no una ruta de archivo relativa.

Por ejemplo, para enlazar a https://example.com/authors/sonali/ desde cualquier otra página en example.com:

src/pages/index.astro
Lee más <a href="/authors/sonali/">sobre Sonali</a>.

Las páginas de Astro utilizan la extensión .astro y tienen las mismas funcionalidades que los componentes de Astro.

src/pages/index.astro
---
---
<html lang="es">
<head>
<title>Mi página de inicio</title>
</head>
<body>
<h1>Bienvenido a mi sitio web</h1>
</body>
</html>

Una página debe producir un documento HTML completo. Si no se incluye explícitamente, Astro agregará la declaración <!DOCTYPE html> necesaria y el contenido de <head> a cualquier componente .astro ubicado dentro de src/pages/ de forma predeterminada. Puedes optar por no participar en este comportamiento en una base por componente marcándolo como una página parcial.

Para evitar repetir los mismos elementos HTML en cada página, puedes mover los elementos comunes <head> y <body> a sus propios componentes de plantilla. Puedes usar tantos o tan pocos componentes de plantilla como desees.

src/pages/index.astro
---
import MySiteLayout from '../layouts/MySiteLayout.astro';
---
<MySiteLayout>
<p>El contenido de mi página envuelto en un componente de plantilla</p>
</MySiteLayout>
Lee más sobre componentes de plantilla en Astro.

Astro trata los archivos Markdown (.md) dentro de src/pages/ como páginas en tu proyecto. Si tienes la integración de MDX instalada, también procesa los archivos MDX (.mdx) de la misma manera. Estos se usan comúnmente para páginas con mucho texto, como artículos de blog y documentación.

Las colecciones de contenido de páginas Markdown o MDX en src/content/ pueden ser usadas para generar páginas dinámicamente.

Las plantillas de página son especialmente útiles para archivos Markdown. Los archivos Markdown pueden usar la propiedad de frontmatter layout para especificar un componente de plantilla que envolverá el contenido de Markdown en un documento de página <html>...</html>.

src/pages/page.md
---
layout: '../layouts/MySiteLayout.astro'
title: 'Mis páginas Markdown'
---
# Título
Esta es mi página, escrita en **Markdown.**
Lee más sobre Markdown en Astro.

Los archivos .html pueden ser colocados en src/pages/ y usados directamente como páginas en tu proyecto. Ten en cuenta que algunas funcionalidades clave de Astro no son compatibles con Componentes HTML.

Para crear una página de error 404 personalizada, puedes crear un archivo 404.astro o 404.md en src/pages.

Esto generará una página 404.html que la mayoría de los servicios de despliegue encontrarán y usarán.

Para que una página de error 500 personalizada se muestre para las páginas que se renderizan bajo demanda, crea el archivo src/pages/500.astro. Esta página personalizada no está disponible para las páginas prerenderizadas y no puede ser prerenderizada.

Si se produce un error al renderizar esta página, se mostrará la página de error 500 predeterminada de tu host a tu visitante.

Agregado en: astro@4.10.3

Durante el desarrollo, si tienes un 500.astro, el error lanzado en tiempo de ejecución se registra en tu terminal, en lugar de mostrarse en la superposición de errores.

Agregado en: astro@4.11.0 Nuevo

src/pages/500.astro es una página especial que recibe automáticamente una propiedad error para cualquier error lanzado durante el renderizado. Esto te permite usar los detalles de un error (por ejemplo, de una página, de un middleware, etc.) para mostrar información a tu visitante.

La propiedad error puede ser de cualquier tipo de datos, lo que puede afectar cómo tipas o usas el valor en tu código:

src/pages/500.astro
---
interface Props {
error: unknown
}
const { error } = Astro.props
---
<div>{error instanceof Error ? error.message : 'Unknown error'}</div>

Para evitar filtrar información sensible al mostrar contenido de la propiedad error, considera evaluar el error primero y devolver contenido apropiado basado en el error lanzado. Por ejemplo, debes evitar mostrar la pila de errores ya que contiene información sobre cómo está estructurado tu código en el servidor

Agregado en: astro@3.4.0

Las páginas parciales son componentes de página ubicados dentro de src/pages/ que no están destinados a renderizar como páginas completas.

Como componentes localizados fuera de esta carpeta, estos archivos no incluyen automáticamente la declaración <!DOCTYPE html>, ni ningún contenido de <head> como estilos y scripts con alcance.

Sin embargo, debido a que se encuentran en el directorio especial src/pages/, el HTML generado está disponible en una URL correspondiente a su ruta de archivo. Esto permite que una biblioteca de renderizado (por ejemplo, htmx, Stimulus, jQuery) la acceda en el cliente y cargue secciones de HTML dinámicamente en una página sin una actualización del navegador o navegación de página.

Las páginas parciales, cuando se combinan con una biblioteca de renderizado, proporcionan una alternativa a las islas de Astro y etiquetas <script> para construir contenido dinámico en Astro.

Los archivos de página que pueden exportar un valor (por ejemplo, .astro, .mdx) pueden ser marcados como parciales.

Configura un archivo dentro del directorio src/pages/ para que sea una página parcial agregando la siguiente exportación:

src/pages/partial.astro
---
export const partial = true;
---
<li>¡Soy una página parcial!</li>

El export const partial debe ser identificable estáticamente. Puede tener el valor de:

  • El boolean true.
  • Una variable de entorno usando import.meta.env como import.meta.env.USE_PARTIALS.

Las páginas parciales son usadas para actualizar dinámicamente una sección de una página usando una biblioteca como htmx.

El siguiente ejemplo muestra un atributo hx-post establecido en la URL de una página parcial. El contenido de la página parcial se usará para actualizar el elemento HTML objetivo en esta página.

src/pages/index.astro
<html>
<head>
<title>Mi página</title>
<script src="https://unpkg.com/htmx.org@1.9.6"
integrity="sha384-FhXw7b6AlE/jyjlZH5iHa/tTe9EpJ1Y55RjcgPbjeWMskSxZt1v9qkxLJWNJaGni"
crossorigin="anonymous"></script>
</head>
</html>
<section>
<div id="parent-div">Objetivo aquí</div>
<button hx-post="/partials/clicked/"
hx-trigger="click"
hx-target="#parent-div"
hx-swap="innerHTML"
>
¡Haz clic en mí!
</button>
</section>

La página parcial .astro debe existir en la ruta de archivo correspondiente e incluir una exportación que defina la página como parcial:

src/pages/partials/clicked.astro
---
export const partial = true;
---
<div>¡Fui cliqueado!</div>

Consulta la documentación de htmx para más detalles sobre el uso de htmx.