Skip to content
Meeko
Type to search the guides and the API reference. Open it from any page with / or Ctrl K; move with the arrow keys and open a result with Enter.
Get started

Contents

On this page

Not translated yet

This page has not been translated into English yet, so it is shown in Spanish.

PageDefinition

interfaz

Opciones de ruta de una página que se renderiza en el servidor ("ssr", el modo por defecto, "stream" o "prerender"). Se declaran con definePage en <script server> o en un sidecar *.route.ts, que nunca llegan al navegador.

ts
import type { PageDefinition } from "@meekojs/meeko/framework";

Source code src/app/definitions/define-page.ts:333

Declaración #

ts
interface PageDefinition<P extends PageSchema | undefined, S extends PageSchema | undefined, D, C = unknown> {
	readonly params?: P
	readonly search?: S
	readonly render?: Exclude<PageRender, 'client'>
	readonly prerenderEntries?: readonly Readonly<Record<string, string>>[] | (() => Promise<readonly Readonly<Record<string, string>>[]>)
	readonly sitemapEntries?: readonly SitemapEntry[] | ((context: SitemapEntriesContext) => readonly SitemapEntry[] | Promise<readonly SitemapEntry[]>)
	readonly load?: (args: PageLoadContext<P, S, C>) => Promise<D> | D
	readonly head?: (args: PageLoadContext<P, S, C> & { data: D }) => PageHead
	readonly layout?: unknown
	readonly layoutProps?: unknown
	readonly middleware?: readonly RouteMiddlewareName[] | false
	readonly cache?: PageCache<P, S, C>
}

Type parameters #

P extends PageSchema | undefined

Schema de params, o undefined.

S extends PageSchema | undefined

Schema de search, o undefined.

D

Datos que devuelve load.

C = unknown

Tipo del contexto de la petición.

Example #

ts
import * as v from "valibot";
import { definePage } from "@meekojs/meeko/framework";

export const route = definePage({
  render: "prerender",
  params: v.object({ slug: v.string() }),
  prerenderEntries: [{ slug: "hola" }, { slug: "adios" }],
  load: ({ params }) => ({ slug: params.slug }),
});

Propiedades #

params #

propiedad sólo lectura opcional

readonly params?: P

Schema de los parámetros de la ruta (los segmentos [id] del archivo), que se validan antes de load y del código de nivel superior; una entrada inválida responde 400. Sin schema, params son los segmentos como texto.

propiedad sólo lectura opcional

readonly search?: S

Schema de los parámetros de búsqueda; una entrada inválida responde 400. Sin schema, cada clave es un texto, o una lista si se repite en la URL.

render #

propiedad sólo lectura opcional

readonly render?: Exclude<PageRender, 'client'>

Cómo llega la página al navegador: "ssr" la renderiza en cada petición, "stream" envía el HTML antes de sus valores defer y "prerender" genera el HTML en meeko build. Para renderizarla en el navegador, "client" (véase ClientPageDefinition). Debe ser un literal, porque meeko build lo lee sin ejecutar el archivo.

Por defecto: "ssr".

prerenderEntries #

propiedad sólo lectura opcional

readonly prerenderEntries?: readonly Readonly<Record<string, string>>[] | (() => Promise<readonly Readonly<Record<string, string>>[]>)

Parámetros de cada URL que meeko build prerenderiza en una ruta dinámica con render: "prerender", o una función asíncrona que los devuelve. Una ruta estática se prerenderiza sin ellos, y "ssr" y "stream" los ignoran.

sitemapEntries #

propiedad sólo lectura opcional since 1.7.0

readonly sitemapEntries?: readonly SitemapEntry[] | ((context: SitemapEntriesContext) => readonly SitemapEntry[] | Promise<readonly SitemapEntry[]>)

URL de la ruta que meeko build añade a sitemap.xml (con sitemap en meeko.config.ts): una lista de SitemapEntry o una función, síncrona o asíncrona, que la devuelve y recibe SitemapEntriesContext. Sirve sobre todo para las rutas dinámicas con "ssr" o "stream", que el build no conoce. En una ruta "prerender" sólo añade lastmod, changefreq y priority a sus páginas prerenderizadas: una entrada sin página detiene el build. exclude y noindex siguen ganando.

load #

propiedad sólo lectura opcional

readonly load?: (args: PageLoadContext<P, S, C>) => Promise<D> | D

Loader del servidor: se ejecuta en cada petición de la página (en SSR y en la petición de datos de una navegación), o una vez por URL durante meeko build con "prerender". Lo que devuelve llega a la página como props.data, que pasa a ser obligatorio. Puede devolver un Response para redirigir y valores defer, que "stream" envía después del HTML.

propiedad sólo lectura opcional

readonly head?: (args: PageLoadContext<P, S, C> & { data: D }) => PageHead

Calcula el head de la página con los datos del loader: title, description y, desde 1.2, las etiquetas de useHead. Tiene prioridad sobre useHead y sobre el document de la configuración.

layout #

propiedad sólo lectura opcional since 1.5.0

readonly layout?: unknown

Layout con nombre de la página (app/layouts/<nombre>.meeko), o false para quitarlo y dejar sólo app/app.meeko. Sin él, el de los +group.ts de sus carpetas o default. Debe ser un literal, porque meeko build lo lee sin ejecutar el archivo. En definePage, su tipo es la unión de los layouts de la aplicación.

layoutProps #

propiedad sólo lectura opcional since 1.5.0

readonly layoutProps?: unknown

Props para el layout de la página: un objeto o una función que las calcula con el contexto de head (data incluido). Se combinan con las de los +group.ts, a las que ganan. Llegan en el HTML del servidor y en el payload, así que deben poder serializarse en JSON. En definePage se tipan contra las props del layout que elige layout.

middleware #

propiedad sólo lectura opcional since 1.6.0

readonly middleware?: readonly RouteMiddlewareName[] | false

Middleware con nombre de app/middleware que la página añade, después de los globales y de los de sus +group.ts, o false para quitar los heredados. Debe ser un array literal de nombres, porque meeko build lo lee sin ejecutar el archivo; su tipo es la unión de los middleware con nombre de la aplicación.

cache #

propiedad sólo lectura opcional since 1.7.0

readonly cache?: PageCache<P, S, C>

Caché HTTP de la página: ETag (con 304 sin loader ni render), max-age, stale-while-revalidate y, con memory, una caché en memoria del HTML renderizado. Sólo en producción y para peticiones sin sesión (véase PageCache). Se lee al ejecutar la ruta, como load.

See also #

Was this page helpful?

Add a comment

It is sent when you choose “Yes” or “No”. Only the page, your answer and the comment are stored: no cookies and no personal data.

0 of 2000 characters

Edit on GitHub: packages/meeko/src/app/definitions/define-page.ts