Referencia de la API de Rutas Estáticas
Añadido en:
astro@6.0.0
Este módulo proporciona utilidades para ayudar a los adaptadores a recolectar rutas estáticas desde dentro de su runtime objetivo (ej. workerd). Esto solo proporciona una implementación real en el entorno Vite de prerender. En otros entornos, devuelve una implementación no-op.
Importaciones desde astro:static-paths
Sección titulada “Importaciones desde astro:static-paths”import { StaticPaths,} from 'astro:static-paths';StaticPaths
Sección titulada “StaticPaths”Permite a los adaptadores recolectar todas las rutas que necesitan ser prerenderizadas desde dentro de su runtime objetivo. Esto es útil cuando se implementa un prerenderer personalizado que se ejecuta en un entorno no-Node:
El constructor de StaticPaths acepta un manifest SSR obligatorio y un objeto que describe la caché de rutas y proporciona un método para acceder al componente usado para renderizar la ruta. El método preferido para iniciar una instancia de StaticPaths es pasarle una instancia de app.
El siguiente ejemplo inicializa una instancia de StaticPaths desde una app en un entrypoint de servidor del adaptador:
import { createApp } from 'astro/app/entrypoint';import { StaticPaths } from 'astro:static-paths';
const app = createApp();const staticPaths = new StaticPaths(app);
export const handler = (event, context) => { // do something with `staticPaths`};StaticPaths.getAll()
Sección titulada “StaticPaths.getAll()”Tipo: () => Promise<Array<{ pathname: string, route: RouteData }>>
Recupera todas las rutas que deberían ser prerenderizadas. Esto devuelve una promesa que se resuelve en un array de objetos que describen la ruta y sus datos.
El siguiente ejemplo recolecta todas las rutas estáticas para ser pre-renderizadas antes de devolverlas como Response en un handler del adaptador:
import { StaticPaths } from 'astro:static-paths';
export function createHandler(app) { return async (request) => { const { pathname } = new URL(request.url);
// Endpoint to collect static paths during build if (pathname === '/__astro_static_paths') { const staticPaths = new StaticPaths(app); const paths = await staticPaths.getAll(); // Returns array of { pathname: string, route: RouteData } return new Response(JSON.stringify({ paths })); }
// ... handle other requests };}