Referencia de la API
Astro
global
Sección titulada Astro globalEl objeto global Astro
está disponible en todos los contextos en los archivos .astro
. Tiene las siguientes funciones:
Astro.glob()
Sección titulada Astro.glob()Astro.glob()
es una forma de cargar archivos locales en la configuración de su página estática.
.glob()
solo toma un parámetro: la URL relativa de los archivos locales que te gustaría importar. Es asíncrono y devuelve un array con las exportaciones de los archivos coincidentes.
.glob()
no puede tomar variables o strings que las interpolen, ya que no son analizables de manera estática. (Consulta la guía de solución de problemas para una solución alternativa.) Esto se debe a que Astro.glob()
es un wrapper de la función import.meta.glob()
de Vite.
También puedes utilizar import.meta.glob()
directamente en tu proyecto de Astro. Es posible que quieras hacer esto cuando:
- Necesitas esta característica en un archivo que no sea
.astro
, como una ruta API.Astro.glob()
solamente está disponible en archivos.astro
, mientras queimport.meta.glob()
es accesible en todo el proyecto. - No necesitas cargar cada archivo de inmediato.
import.meta.glob()
puede devolver funciones que importan el contenido del archivo, en vez de devolver el contenido en sí. Ten en cuenta que esta importación incluye todos los estilos y scripts de cualquier archivo importado. Estos serán agrupados y agregados a la página, ya sea que un archivo sea utilizado realmente o no. Esta decisión se toma mediante análisis estático, no en tiempo de ejecución. - Quieres acceder a la ruta de cada archivo.
import.meta.glob()
devuelve un map de la ruta del archivo a su contenido, mientras queAstro.glob()
devuelve una lista de contenido. - Quieres pasar múltiples patrones; por ejemplo, quieres añadir un “patrón negativo” que filtra ciertos archivos.
import.meta.glob()
opcionalmente puede tomar un array de strings globales en vez de un solo string.
Lee más en la documentación de Vite.
Archivos Markdown
Sección titulada Archivos MarkdownLos archivos Markdown tienen la siguiente interfaz:
Opcionalmente, puedes proporcionar un tipo para la variable de frontmatter
usando un tipo genérico de TypeScript.
Archivos Astro
Sección titulada Archivos AstroLos archivos Astro tienen la siguiente interfaz:
Otros archivos
Sección titulada Otros archivosOtros archivos pueden tener varias interfaces diferentes, pero Astro.glob()
acepta un genérico de TypeScript si sabes exactamente qué tipo contiene un archivo no reconocido.
Astro.props
Sección titulada Astro.propsAstro.props
es un objeto que contiene cualquier valor que haya sido pasado como atributo de componente. Los componentes de plantilla para archivos .md
y .mdx
reciben valores de frontmatter como props.
Astro.params
Sección titulada Astro.paramsAstro.params
es un objeto que contiene los valores de segmentos de ruta dinámica que coincidan con esta petición.
En builds estáticos, esto serán los params
devueltos por getStaticPaths()
usados para prerrenderizar rutas dinámicas.
En builds SSR, esto puede ser cualquier valor que coincida con los segmentos de la ruta en el patrón de la ruta dinámica.
Ver también: params
Astro.request
Sección titulada Astro.requestAstro.request
es un objeto Request estándar. Se puede utilizar para obtener la url
, headers
, method
e incluso el cuerpo de la solicitud.
Ver también: Astro.url
Con la opción por defecto output: 'static'
, El objeto Astro.request.url
no contiene parámetros de búsqueda, tales como ?foo=bar
, ya que no es posible determinarlos por adelantado durante la compilación final de los archivos en builds estáticos. Sin embargo, en el modo output: 'server'
, el objeto Astro.request.url
contiene los parámetros de búsqueda debido a que pueden ser determinados desde una petición al servidor.
Astro.response
Sección titulada Astro.responseAstro.response
es un objeto estándar ResponseInit
. Tiene la siguiente estructura.
status
: El código numérico de estado de la respuesta, p. ej.200
.statusText
: El mensaje de estado asociado con el código de estado, p. ej.'OK'
.headers
: Una instancia deHeaders
que puedes usar para establecer las cabeceras HTTP de la respuesta.
Astro.response
se utiliza para establecer el status
, statusText
y headers
de la respuesta de una página.
O para establecer un header:
Astro.cookies
Sección titulada Astro.cookies
Agregado en:
astro@1.4.0
Astro.cookies
contiene utilidades para leer y manipular cookies.
Tipo: (key: string, options?: CookieGetOptions) => AstroCookie
Consigue la cookie como un objeto AstroCookie
, que contiene el value
y funciones de utilidad para convertir la cookie a tipos no string.
Tipo: (key: string) => boolean
Si esta cookie existe. Si la cookie ha sido establecida a través de Astro.cookies.set()
esto devolverá true
, de lo contrario revisará las cookies en Astro.request
.
Tipo: (key: string, value: string | number | boolean | object, options?: CookieSetOptions) => void
Configura la cookie key
al valor dado. Esto intentará convertir el valor de la cookie a un string. Las opciones proveen maneras de establecer características de la cookie, como maxAge
o httpOnly
.
delete
Sección titulada deleteTipo: (key: string, options?: CookieDeleteOptions) => void
Marca la cookie como eliminada. Una vez que una cookie es eliminada, Astro.cookies.has()
devolverá false
y Astro.cookies.get()
devolverá un AstroCookie
con un value
de undefined
. Las opciones permiten establecer el domain
y path
de la cookie a eliminar.
headers
Sección titulada headersTipo: () => Iterator<string>
Consigue los valores de cabecera para Set-Cookie
que serán enviados con la respuesta.
AstroCookie
Sección titulada AstroCookieObtener una cookie mediante Astro.cookies.get()
retorna un tipo AstroCookie
. Posee la siguiente estructura.
Tipo: string | undefined
El valor de la string sin procesar de la cookie.
Tipo: () => Record<string, any>
Analiza el valor de la cookie a través de JSON.parse()
, devolviendo un objeto. Lanza un error si el valor de la cookie no es un JSON válido.
number
Sección titulada numberTipo: () => number
Analiza el valor de la cookie como un número. Devuelve NaN si no es un número válido.
boolean
Sección titulada booleanTipo: () => boolean
Convierte el valor de la cookie a un booleano.
CookieGetOptions
Sección titulada CookieGetOptions
Agregado en:
astro@4.1.0
Conseguir una cookie también permite especificar opciones a través de la interfaz CookieGetOptions
:
decode
Sección titulada decodeTipo: (value: string) => string
Permite personalizar cómo se deserializa una cookie en un valor.
CookieSetOptions
Sección titulada CookieSetOptions
Agregado en:
astro@4.1.0
Configurar una cookie a través de Astro.cookies.set()
permite pasar un CookieSetOptions
para personalizar cómo se serializa la cookie.
domain
Sección titulada domainTipo: string
Especifica el dominio. Si no se establece un dominio, la mayoría de los clientes interpretarán que se aplica al dominio actual.
expires
Sección titulada expiresTipo: Date
Especia la fecha en la que la cookie expirará.
httpOnly
Sección titulada httpOnlyTipo: boolean
Si es verdadero, la cookie no será accesible del lado del cliente.
maxAge
Sección titulada maxAgeTipo: number
Especifica un número, en segundos, para el cual la cookie es válida.
Tipo: string
Especifica una subruta del dominio en la que se aplica la cookie.
sameSite
Sección titulada sameSiteTipo: boolean | 'lax' | 'none' | 'strict'
Especifica el valor de la cabecera de cookie SameSite.
secure
Sección titulada secureTipo: boolean
Si es verdadero, la cookie solo se establece en sitios https.
encode
Sección titulada encodeTipo: (value: string) => string
Permite personalizar cómo se serializa una cookie.
Astro.redirect()
Sección titulada Astro.redirect()Astro.redirect()
te permite redireccionar a otra página.
Una página (no un componente hijo) debe return
(devolver) el resultado de Astro.redirect()
para que la redirección ocurra.
Astro.canonicalURL
Sección titulada Astro.canonicalURLUtiliza Astro.url
para construir tu propia URL canónica.
La URL canónica de la página actual.
Astro.url
Sección titulada Astro.urlastro@1.0.0-rc
Un objeto URL construido a partir del valor actual de la string URL Astro.request.url
. Útil para interactuar con propiedades individuales de la URL de la solicitud, como la ruta o el origen.
Equivalente a hacer new URL (Astro.request.url)
.
También puedes usar Astro.url
para crear nuevas URL pasándola como argumento a new URL()
.
Astro.clientAddress
Sección titulada Astro.clientAddress
Agregado en:
astro@1.0.0-rc
Especifica la dirección IP de la solicitud. Esta propiedad solo está disponible cuando se compila para SSR (renderizado en el servidor) y no debe usarse para sitios estáticos.
Astro.site
Sección titulada Astro.siteAstro.site
devuelve una URL
generada desde site
en su configuración de Astro. Si site
no esta definido en tu configuración Astro, Astro.site
no estará definido.
Astro.generator
Sección titulada Astro.generator
Agregado en:
astro@1.0.0
Astro.generator
es una manera conveniente de agregar una etiqueta <meta name="generator">
con tu versión actual de Astro. Responde al formato "Astro v1.x.x"
.
Astro.slots
Sección titulada Astro.slotsAstro.slots
contiene funciones de utilidad para modificar los hijos en slots de un componente Astro.
Astro.slots.has()
Sección titulada Astro.slots.has()Tipo: (slotName: string) => boolean
Puedes verificar si el contenido para un slot específico existe usando Astro.slots.has()
. Esto puede ser útil cuando quieres envolver el contenido del slot, pero solo quieres renderizar los elementos envueltos cuando se esté usando el slot.
Astro.slots.render()
Sección titulada Astro.slots.render()Tipo: (slotName: string, args?: any[]) => Promise<string>
Puedes renderizar de forma asíncrona el contenido de un slot a un string de HTML usando Astro.slots.render()
.
¡Esta nota es para casos de uso avanzados! En la mayoría de los casos, es más simple renderizar el contenido del slot con el elemento <slot />
.
Astro.slots.render()
opcionalmente acepta un segundo argumento: un array de parámetros que se enviarán a cualquier función hija. Esto puede ser útil para componentes de utilidad personalizados.
Por ejemplo, este componente <Shout />
convierte su prop message
en mayúsculas y la pasa al slot predeterminado:
Una función callback pasada como hijo de <Shout />
recibirá el parámetro message
en mayúsculas:
Astro.self
Sección titulada Astro.selfAstro.self
permite llamar recursivamente a los componentes de Astro. Este comportamiento te permite renderizar un componente de Astro desde dentro de sí mismo utilizando <Astro.self>
en la plantilla del componente. Esto puede ser útil para iterar sobre grandes data stores y estructuras de datos anidadas.
Este componente podría usarse así:
Y renderizaría este HTML:
Astro.locals
Sección titulada Astro.localsAstro.locals
es un objeto que contiene cualquier valor del objeto context.locals
de un middleware. Utiliza esto para acceder a los datos devueltos por el middleware en tus archivos .astro
.
Astro.preferredLocale
Sección titulada Astro.preferredLocaleAstro.preferredLocale
is a computed value that represents the preferred locale of the user.
Astro.preferredLocale
es un valor computado que representa el idioma preferido del usuario.
Es calculado verificando los idiomas configurados en tu array i18n.locales
y los idiomas soportados por el navegador del usuario a través de la cabecera Accept-Language
. Este valor es undefined
si no existe tal coincidencia.
Esta propiedad solo está disponible cuando se compila para SSR (renderizado en el servidor) y no debe usarse para sitios estáticos.
Astro.preferredLocaleList
Sección titulada Astro.preferredLocaleListAstro.preferredLocaleList
representa el array de todos los idiomas que son solicitados por el navegador y soportados por tu sitio web. Esto produce una lista de todos los idiomas compatibles entre tu sitio y tu usuario.
Si la petición del navegador no especifica ningún idioma preferido, entonces este valor será []
: no admites ninguno de los idiomas preferidos de un usuario sin preferencias.
Si el navegador no especifica ningún idioma preferido, entonces este valor será i18n.locales
: todos tus idiomas soportados serán considerados igualmente preferidos por un visitante sin preferencias.
Esta propiedad solo está disponible cuando se compila para SSR (renderizado en el servidor) y no debe usarse para sitios estáticos.
Astro.currentLocale
Sección titulada Astro.currentLocaleLa localización computada a partir de la URL actual, utilizando la sintaxis especificada en tu configuración locales
. Si la URL no contiene un prefijo /[locale]/
, entonces el valor por defecto será i18n.defaultLocale
.
Contexto del Endpoint
Sección titulada Contexto del EndpointLas funciones de Endpoint reciben un objeto de contexto como primer parámetro. Posee muchas de las propiedades del objeto global Astro
.
context.locals
Sección titulada context.localscontext.locals
es un objeto utilizado para almacenar y acceder a información arbitraria durante el ciclo de vida de una petición.
Las funciones de middleware pueden leer y escribir los valores de context.locals
:
Los endpoints de la API sólo pueden leer información de context.locals
.:
Ver también: Astro.locals
context.params
Sección titulada context.paramscontext.params
es un objeto que contiene los valores de los segmentos de la ruta dinámica que coincidan con esta petición.
En builds estáticos, esto serán los params
devueltos por getStaticPaths()
usados para prerrenderizar rutas dinámicas.
En builds SSR, esto puede ser cualquier valor que coincida con los segmentos de la ruta en el patrón de la ruta dinámica.
Ver también: params
context.props
Sección titulada context.propscontext.props
es un objeto que contiene las props
pasadas desde getStaticPaths()
. Como getStaticPaths()
no se utiliza durante la generación en SSR (server-side rendering), context.props
solamente está disponible en builds estáticos.
Ver también: Transferencia de datos con props
context.request
Sección titulada context.requestUn objeto Request estándar. Puede ser usado para obtener la url
, headers
, method
y también el body de la petición.
Ver también: Astro.request
context.cookies
Sección titulada context.cookiescontext.cookies
contiene utilidades para leer y manipular cookies.
Ver también: Astro.cookies
context.url
Sección titulada context.urlUn objeto URL generado desde el valor actual de la string URL context.request.url
.
Ver también: Astro.url
context.clientAddress
Sección titulada context.clientAddressEspecifica la dirección IP de la petición. Esta propiedad solamente está disponible durante la generación en SSR (server-side rendering) y no debe ser utilizado en sitios estáticos.
Ver también: Astro.clientAddress
context.site
Sección titulada context.sitecontext.site
devuelve una URL
generada desde el site
en tu configuración de Astro. Si no está definido, devolverá una URL generada desde localhost
.
Ver también: Astro.site
context.generator
Sección titulada context.generatorcontext.generator
es una manera conveniente de indicar la versión de Astro que esté corriendo tu proyecto. Posee el formato "Astro v1.x.x"
.
Ver también: Astro.generator
context.redirect()
Sección titulada context.redirect()context.redirect()
devuelve un objeto Response que te permite redirigir al usuario a otra página. Esta función solamente está disponible durante la generación en SSR (server-side rendering) y no debe ser utilizado en sitios estáticos.
Ver también: Astro.redirect()
getStaticPaths()
Sección titulada getStaticPaths()Si una página usa parámetros dinámicos en el nombre del archivo, ese componente necesitará exportar una función getStaticPaths()
.
Esta función es necesaria porque Astro es un creador de sitios estáticos. Eso significa que todo su sitio se construye con anticipación. Si Astro no sabe generar una página en el momento de la creación, sus usuarios no la verán cuando visiten tu sitio.
La función getStaticPaths()
debe devolver un array de objetos para determinar qué rutas serán prerenderizadas por Astro.
También puede ser usado en endpoints de archivo estáticos para enrutamiento dinámico.
La función getStaticPaths()
se ejecuta en su propio ámbito aislado una vez, antes de que se cargue cualquier página. Por lo tanto, no puede hacer referencia a nada desde el ámbito principal, aparte de las importaciones de archivos. El compilador le advertirá si incumple este requisito.
params
Sección titulada paramsLa key params
de cada objeto devuelto le dice a Astro qué rutas construir. Los parámetros devueltos deben corresponder con los parámetros dinámicos y los parámetros comodín definidos en la ruta de archivo de su componente.
Los params
están codificados en la URL, por lo que solo se admiten strings como valores. El valor de cada objeto params
debe coincidir con los parámetros utilizados en el nombre de la página.
Por ejemplo, supongamos que tienes una página en src/pages/posts/[id].astro
. Si exportas getStaticPaths
desde esta página y devuelves lo siguiente para las rutas:
Luego, Astro generará estáticamente posts/1
, posts/2
y posts/3
en el momento de la compilación.
Transferencia de datos con props
Sección titulada Transferencia de datos con propsPara pasar datos adicionales a cada página generada, también puedes establecer un valor props
en cada objeto de ruta devuelto. A diferencia de params
, props
no están codificados en la URL y, por lo tanto, no están limitados a solamente strings.
Por ejemplo, suponiendo que generas páginas basadas en datos obtenidos de una API remota. Puedes pasar el objeto de datos completo al componente de página dentro de getStaticPaths
:
También puedes pasar un array regular, que puede ser útil al generar o agregar una lista conocida de rutas.
Luego, Astro generará estáticamente posts/1
y posts/2
en el momento de la compilación usando el componente de página en pages/posts/[id].astro
. La página puede hacer referencia a estos datos usando Astro.props
:
paginate()
Sección titulada paginate()La paginación es un caso de uso común para los sitios web que Astro admite de forma nativa a través de la función paginate()
. paginate()
generará automáticamente un array para devolver desde getStaticPaths()
que creará una URL para cada página de la colección paginada. El número de página se pasará como un parámetro, y los datos de la página se pasarán como una prop page
.
paginate()
asume un nombre de archivo [page].astro
o [...page].astro
. El parámetro page
se convierte en el número de página en la URL:
/posts/[page].astro
generaría las URL/posts/1
,/posts/2
,/posts/3
, etc./posts/[...page].astro
generaría las URL/posts
,/posts/2
,/posts/3
, etc.
paginate()
tiene los siguientes argumentos:
pageSize
- El numero de artículos mostrados por páginaparams
- Envía parámetros adicionales para la creación rutas dinámicasprops
- Envía props adicionales para que estén disponibles en cada página
La prop de paginación page
Sección titulada La prop de paginación pageLa paginación pasará una prop page
a cada página renderizada que represente una sola página de datos en la colección paginada. Esto incluye los datos que ha paginado (page.data
), así como los metadatos de la página (page.url
, page.start
, page.end
, page.total
, etc.). Estos metadatos son útiles para cosas como un botón “Página siguiente” o un mensaje “Mostrando 1-10 de 100”.
page.data
Sección titulada page.dataTipo: Array
Array de datos devueltos de data()
para la página actual.
page.start
Sección titulada page.startTipo: number
Índice del primer elemento en la página actual, comenzando en 0
. (p. ej. si pageSize: 25
, esto sería 0
en la página 1, 25
en la página 2, etc.)
page.end
Sección titulada page.endTipo: number
Índice del último elemento en la página actual.
page.size
Sección titulada page.sizeTipo: number
Indica cuantos hay elementos por página.
page.total
Sección titulada page.totalTipo: number
El número total de elementos en todas las páginas.
page.currentPage
Sección titulada page.currentPageTipo: number
El número de página actual, comenzando en 1
.
page.lastPage
Sección titulada page.lastPageTipo: number
El número total de páginas.
page.url.current
Sección titulada page.url.currentTipo: string
Consigue la URL de la página actual (útil para URLs canónicas).
page.url.prev
Sección titulada page.url.prevTipo: string | undefined
Consigue la URL de la página anterior (será undefined
si está en la página 1).
page.url.next
Sección titulada page.url.nextTipo: string | undefined
Consigue la URL de la página siguiente (será undefined
si no hay más páginas).
import.meta
Sección titulada import.metaTodos los módulos ESM incluyen una propiedad import.meta
. Astro agrega import.meta.env
a través de Vite.
import.meta.env.SSR
se puede usar para saber cuándo se renderiza en el servidor. A veces, es posible que desees una lógica diferente, por ejemplo, un componente que solo debe representarse en el cliente:
Imágenes (astro:assets
)
Sección titulada Imágenes (astro:assets)getImage()
Sección titulada getImage()getImage()
depende de APIs exclusivas del servidor y provoca errores en la compilación cuando se utiliza en el cliente.
La función getImage()
está diseñada para generar imágenes destinadas a ser utilizadas en algún lugar que no sea directamente en HTML, por ejemplo, en una Ruta de API. También te permite crear tu propio componente <Image />
personalizado.
getImage()
recibe un objeto de opciones con las mismas propiedades que el componente Image (excepto alt
).
Devuelve un objeto con las siguientes propiedades:
Colecciones de Contenido (astro:content
)
Sección titulada Colecciones de Contenido (astro:content)
Agregado en:
astro@2.0.0
Las colecciones de contenido ofrecen APIs para configurar y consultar tus documentos Markdown o MDX en src/content/
. Para obtener características y ejemplos de uso, consulta nuestra guía de colecciones de contenido.
defineCollection()
Sección titulada defineCollection()defineCollection()
es una utilidad para configurar una colección en un archivo src/content/config.*
.
Esta función acepta las siguientes propiedades:
Agregado en:
astro@2.5.0
Tipo: 'content' | 'data'
Por defecto: 'content'
type
es un string que define el tipo de entradas almacenadas dentro de una colección:
'content'
- para formatos de creación de contenido como Markdown (.md
), MDX (.mdx
) o Markdoc (.mdoc
)'data'
- para formatos de datos únicamente como JSON (.json
) o YAML (.yaml
)
Esto significa que las colecciones no pueden almacenar una mezcla de formatos de contenido y datos. Debes dividir estas entradas en colecciones separadas por tipo.
schema
Sección titulada schemaType: TSchema extends ZodType
El schema
es un objeto de Zod opcional para configurar el tipo y la forma del frontmatter del documento para una colección. Cada valor debe usar un validador de Zod.
Consulta la guía de Colección de Contenido
para ejemplos de uso.
reference()
Sección titulada reference()Tipo: (collection: string) => ZodEffects<ZodString, { collection, id: string } | { collection, slug: string }>
La función reference()
se utiliza en la configuración del contenido para definir una relación, o “referencia” de una colección a otra. Esta función acepta el nombre de la colección y valida el identificador/es de entrada especificados en el frontmatter o archivo de datos del contenido.
Este ejemplo define referencias desde un autor de blog a la colección authors
y a un arreglo de publicaciones relacionadas en la misma colección blog
:
Consulta la guía de Content Collection
para ver un ejemplo de uso.
getCollection()
Sección titulada getCollection()Type: (collection: string, filter?: (entry: CollectionEntry<collection>) => boolean) => CollectionEntry<collection>[]
getCollections()
es una función que recupera una lista de entradas de colección de contenido por nombre de colección.
Regresa todos los elementos en la colección por defecto, y acepta una función opcional filter
para reducir por propiedades de entrada. Esto te permite consultar solo algunos elementos en una colección basándose en id
, slug
, o valores de frontmatter a través del objeto data
.
Consulta la sección de guía de getCollection()
para ejemplos de uso completo.
getEntry()
Sección titulada getEntry()
Agregado en:
astro@2.5.0
Tipos:
(collection: string, contentSlugOrDataId: string) => CollectionEntry<collection>
({ collection: string, id: string }) => CollectionEntry<collection>
({ collection: string, slug: string }) => CollectionEntry<collection>
getEntry()
es una función que recupera una única entrada de una colección mediante el nombre de la colección y ya sea el id
de la entrada (para colecciones type: 'data'
) o el slug
de la entrada (para colecciones type: 'content'
). getEntry()
también se puede utilizar para obtener las entradas referenciadas y acceder a las propiedades data
, body
o render()
:
Consulta la guía de “Colecciones de Contenido” para ver ejemplos de consulta de entradas de colecciones.
getEntries()
Sección titulada getEntries()
Agregado en:
astro@2.5.0
Tipos:
(Array<{ collection: string, id: string }>) => Array<CollectionEntry<collection>>
(Array<{ collection: string, slug: string }>) => Array<CollectionEntry<collection>>
getEntries()
es una función que recupera múltiples entradas de una misma colección. Esto es útil para devolver un arreglo de entradas referenciadas para acceder a sus propiedades asociadas data
, body
y render()
.
getEntryBySlug()
Sección titulada getEntryBySlug()Tipo: (collection: string, slug: string) => CollectionEntry<collection>
Utiliza la función getEntry()
para consultar las entradas de contenido. Esta función acepta los mismos argumentos que getEntryBySlug()
, y admite la consulta por id
para colecciones JSON o YAML.
getEntryBySlug()
is a function that retrieves a single collection entry by collection name and entry slug
.
Consulta la guía Content Collection
para ver un ejemplo de uso.
Tipo de Entrada de la Colección
Sección titulada Tipo de Entrada de la ColecciónLas funciones de consulta, incluyendo getCollection()
, getEntry()
y getEntries()
, devuelven entradas con el tipo CollectionEntry
. Este tipo está disponible como una utilidad desde astro:content
:
Una CollectionEntry<TCollectionName>
es un objeto con los siguientes valores:
Disponible para: type: 'content'
and type: 'data'
collections
Tipos de ejemplo:
- colecciones de contenido:
'entry-1.md' | 'entry-2.md' | ...
- colecciones de datos:
'author-1' | 'author-2' | ...
Un identificador único que usa la ruta de archivo relativa a src/content/[collection]
. Enumera todos los posibles valores de cadena basados en las rutas de archivo de entrada de colección. Ten en cuenta que las colecciones definidas como type: 'content'
incluyen la extensión de archivo en su ID, mientras que las colecciones definidas como type: 'data'
no lo hacen.
collection
Sección titulada collectionDisponible para: type: 'content'
and type: 'data'
collections
Tipo de ejemplo: 'blog' | 'authors' | ...
El nombre de una carpeta de nivel superior en src/content/
en la cual se encuentran las entradas. Este es el nombre utilizado para hacer referencia a la colección en tu esquema y en las funciones de consulta.
Disponible para: tipo: 'content'
y tipo: collecciones 'data'
Tipo: CollectionSchema<TCollectionName>
Un objeto de propiedades de frontmatter inferidas de su esquema de colección (ver referencia de defineCollection()
). Por defecto es any
si no es configurado un esquema.
Disponible para: type: 'content'
collections only
Tipo de ejemplo: 'entry-1' | 'entry-2' | ...
Un slug listo para ser utilizado en una URL para documentos Markdown o MDX. Por defecto, se genera a partir del id
sin la extensión de archivo, pero se puede modificar estableciendo la propiedad slug
en el frontmatter del archivo.
Disponible para: tipo: 'content'
solo colecciones
Tipo: string
Un string que contiene el cuerpo sin compilar del documento Markdown o MDX.
render()
Sección titulada render()Disponible para: type: 'content'
solo colecciones
Tipo: () => Promise<RenderedEntry>
Una función para compilar un documento Markdown o MDX dado para su renderizado. Regresa las siguientes propiedades:
<Content />
- Un componente usado para renderizar el contenido del documento en un archivo Astro.headings
- Una lista generada de encabezados, que refleja la utilidadgetHeadings()
de Astro en las importaciones de Markdown y MDX.remarkPluginFrontmatter
- El objeto frontmatter es moficado después de aplicar los plugins de remark o rehype ha sido aplicado. Configurado para el tipoany
.
Ver la guía de renderizado de contenido de entrada para ejemplos de uso completo.
Otros tipos de colecciones de contenido
Sección titulada Otros tipos de colecciones de contenidoEl módulo astro:content
también exporta los siguientes tipos para su uso en tu proyecto Astro:
CollectionKey
Sección titulada CollectionKeyUna unión de strings de todos los nombres de colecciones definidos en tu archivo src/content/config.*
. Este tipo puede ser útil al definir una función genérica que acepta cualquier nombre de colección.
ContentCollectionKey
Sección titulada ContentCollectionKeyUna unión de strings de todos los nombres de colecciones con type: 'content'
definidos en tu archivo src/content/config.*
.
DataCollectionKey
Sección titulada DataCollectionKeyUna unión de strings de todos los nombres de colecciones con type: 'data'
definidos en tu archivo src/content/config.*
.
SchemaContext
Sección titulada SchemaContextEl objeto context
que defineCollection
utiliza para dar forma a la función de schema
. Este tipo puede ser útil al construir esquemas reutilizables para múltiples colecciones.
Incluye la siguiente propiedad:
image
- El helper de esquemaimage()
que te permite utilizar imágenes locales en colecciones de contenido.
Middleware (astro:middleware
)
Sección titulada Middleware (astro:middleware)
Agregado en:
astro@2.6.0
El middleware te permite interceptar las peticiones y respuestas e inyectar comportamientos dinámicos cada vez que una página o un endpoint está a punto de ser renderizado. Para obtener características y ejemplos de uso, consulta nuestra guía de middleware.
onRequest()
Sección titulada onRequest()Una función exportada requerida de src/middleware.js
que se llamará antes de renderizar cada página o ruta de API. Acepta dos argumentos opcionales: context y next(). onRequest()
debe devolver una Response
: ya sea directamente, o llamando a next()
.
next()
Sección titulada next()Una función que intercepta (lee y modifica) la Response
de una Request
o llama al siguiente middleware en la cadena y devuelve una Response
. Por ejemplo, esta función podría modificar el cuerpo HTML de una respuesta.
Esto es un argumento opcional de onRequest()
, y puede proporcionar la Response
requerida devuelta por el middleware.
sequence()
Sección titulada sequence()Una función que acepta funciones de middleware como argumentos y las ejecutará en el orden en que se pasan.
createContext()
Sección titulada createContext()Una API de bajo nivel para crear un APIContext
para ser pasado a una función onRequest()
de middleware de Astro.
Esta función puede ser utilizada por integraciones/adaptadores para ejecutar programáticamente el middleware de Astro.
trySerializeLocals()
Sección titulada trySerializeLocals()Una API de bajo nivel que toma cualquier valor y trata de devolver una versión serializada (un string) de él. Si el valor no se puede serializar, la función lanzará un error en tiempo de ejecución.
Internacionalización (astro:i18n
)
Sección titulada Internacionalización (astro:i18n)
Agregado en:
astro@3.5.0
Este módulo proporciona funciones para ayudarte a crear URLs utilizando los locales configurados en tu proyecto.
Crear rutas para tu proyecto con el enrutador i18n dependerá de ciertos valores de configuración que hayas establecido y que afectan a las rutas de tus páginas. Al crear rutas con estas funciones, asegúrate de tener en cuenta tus ajustes individuales para:
También, ten en cuenta que las URLs devueltas por estas funciones para tu defaultLocale
reflejarán tu configuración de i18n.routing
.
Para obtener características y ejemplos de uso, consulta nuestra guía de enrutamiento i18n.
getRelativeLocaleUrl()
Sección titulada getRelativeLocaleUrl()getRelativeLocaleUrl(locale: string, path?: string, options?: GetLocaleOptions): string
Usa esta función para obtener una ruta relativa para un idioma. Si el idioma no existe, Astro lanzará un error.
getAbsoluteLocaleUrl()
Sección titulada getAbsoluteLocaleUrl()getAbsoluteLocaleUrl(locale: string, path: string, options?: GetLocaleOptions): string
Usa esta función para obtener una ruta absoluta para un idioma cuando [site
] tiene un valor. Si [site
] no está configurado, la función devolverá una URL relativa. Si el idioma no existe, Astro lanzará un error.
getRelativeLocaleUrlList()
Sección titulada getRelativeLocaleUrlList()getRelativeLocaleUrlList(path?: string, options?: GetLocaleOptions): string[]
Usa esto como getRelativeLocaleUrl
para devolver una lista de rutas relativas para todos los idiomas.
getAbsoluteLocaleUrlList()
Sección titulada getAbsoluteLocaleUrlList()getAbsoluteLocaleUrlList(path?: string, options?: GetLocaleOptions): string[]
Usa esto como getAbsoluteLocaleUrl
para devolver una lista de rutas absolutas para todos los idiomas.
getPathByLocale()
Sección titulada getPathByLocale()getPathByLocale(locale: string): string
Una función que devuelve el path
asociado a uno o más codes
cuando se configuran rutas de idioma personalizadas.
getLocaleByPath
Sección titulada getLocaleByPathgetLocaleByPath(path: string): string
Una función que devuelve el code
asociado a un path
de idioma.
redirectToDefaultLocale()
Sección titulada redirectToDefaultLocale()redirectToDefaultLocale(context: APIContext, statusCode?: ValidRedirectStatus): Promise<Response>
Agregado en:
astro@4.6.0
Disponible solo cuando i18n.routing
está configurado en "manual"
Una función que devuelve una Response
que redirige al defaultLocale
configurado. Acepta un código de estado de redirección válido opcional.
redirectToFallback()
Sección titulada redirectToFallback()redirectToFallback(context: APIContext, response: Response): Promise<Response>
Agregado en:
astro@4.6.0
Disponible solo cuando i18n.routing
está configurado en "manual"
Una función que te permite usar tu configuración de i18n.fallback
en tu propio middleware.
notFound()
Sección titulada notFound()notFound(context: APIContext, response: Response): Promise<Response>
Agregado en:
astro@4.6.0
Disponible solo cuando i18n.routing
está configurado en "manual"
Usa esta función en tu middleware de enrutamiento para devolver un 404 cuando:
- la ruta actual no es una raíz. por ejemplo,
/
o/<base>
- la URL no contiene un idioma configurado
Cuando se pasa una Response
, la nueva Response
emitida por esta función contendrá los mismos encabezados de la respuesta original.
middleware()
Sección titulada middleware()middleware(options: { prefixDefaultLocale: boolean, redirectToDefaultLocale: boolean })
Agregado en:
astro@4.6.0
Disponible solo cuando i18n.routing
está configurado en "manual"
Una función que te permite crear programáticamente el middleware de Astro i18n.
Esto es útil cuando aún deseas utilizar la lógica i18n predeterminada, pero solo agregar algunas excepciones a tu sitio web.
requestHasLocale()
Sección titulada requestHasLocale()requestHasLocale(context: APIContext): boolean
Agregado en:
astro@4.6.0
Disponible solo cuando i18n.routing
está configurado en "manual"
Verifica si la URL actual contiene un idioma configurado. Internamente, esta función usará APIContext#url.pathname
.
Componentes incorporados
Sección titulada Componentes incorporadosAstro incluye varios componentes integrados que puedes usar en tus proyectos. Todos los componentes integrados están disponibles en archivos .astro
a través de import {} from 'astro:components';
.
<Code />
Sección titulada <Code />Este componente proporciona resaltado de sintaxis para bloques de código en el momento de la compilación (no incluye JavaScript del lado del cliente). El componente funciona internamente con Shiki y es compatible con todos los temas populares y lenguajes de programación. Además, puedes agregar temas y lenguajes de programación personalizados modificando theme
y lang
respectivamente.
<Fragment />
Sección titulada <Fragment />Un componente utilizado con las directivas set:*
para representar contenido HTML sin elementos de envoltura adicionales:
Consulta más información sobre el uso de fragmentos en la sintaxis de Astro.
<Prism />
Sección titulada <Prism />Para usar el componente resaltador Prism
, primero instala el paquete @astrojs/prism
:
Este componente proporciona resaltado de sintaxis específico con el lenguaje de programación para bloques de código al aplicar las clases CSS de Prism. Ten en cuenta que debes proporcionar una hoja de estilo Prism CSS (o traer la tuya propia) para que aparezca el resaltado de sintaxis. Consulta la sección de configuración de Prism para obtener más detalles.
Consulta la lista de idiomas admitidos por Prism donde puedes encontrar el alias correspondiente de un idioma. ¡Y también puedes mostrar tus bloques de código Astro con lang="astro"
!
<Image />
Sección titulada <Image />Propiedades
Sección titulada Propiedades- src (requerido)
- alt (requerido)
- width y height (requerido para imágenes
public/
y remotas) - format
- quality
- densities
- widths
Además de las propiedades mencionadas anteriormente, el componente <Image />
acepta todas las propiedades aceptadas por la etiqueta HTML <img>
.
Mira más en la guía de imágenes.
<Picture />
Sección titulada <Picture />
Agregado en:
astro@3.3.0
Utiliza el componente integrado <Picture />
de Astro para mostrar una imagen responsiva con varios formatos y/o tamaños.
Mira más en la guía de imágenes.
Propiedades
Sección titulada Propiedades<Picture />
acepta todas las propiedades del componente <Image />
, además de las siguientes:
formats
Sección titulada formatsUn array de formatos de imagen para usar en las etiquetas <source>
. De forma predeterminada, esto está configurado como ['webp']
.
fallbackFormat
Sección titulada fallbackFormatFormato que se utilizará como valor de respaldo para la etiqueta <img>
. De forma predeterminada, se establece en .png
para imágenes estáticas, .gif
para imágenes animadas y .svg
para archivos SVG.
pictureAttributes
Sección titulada pictureAttributesUn objeto de atributos que se agregarán a la etiqueta <picture>
. Utiliza esta propiedad para aplicar atributos al propio elemento <picture>
. Los atributos aplicados directamente al componente <Picture />
se aplicarán al elemento <img>
interno, excepto aquellos utilizados para la transformación de la imagen.
<Content />
Sección titulada <Content />Un componente genérico utilizado para representar el contenido de una entrada de colección de contenido.
Primero, consulta una o varias entradas utilizando getCollection()
o getEntry()
. Entonces, la función entry.render()
puede devolver el componente <Content />
para utilizarlo en una plantilla de archivo .astro
.
<ViewTransitions />
Sección titulada <ViewTransitions />Opta por utilizar view transitions en páginas individuales importando y agregando el componente de enrutamiento <ViewTransitions />
en la etiqueta <head>
de cada página deseada.
Mira más acerca de cómo controlar el enrutador y añadir directivas de transición a elementos de página y componentes.
<Debug />
Sección titulada <Debug />Este componente proporciona una forma de inspeccionar valores en el lado del cliente, sin JavaScript.
Reference