Saltar al contenido
Meeko
Escribe para buscar en las guías y en la referencia de la API. Ábrela desde cualquier página con / o Ctrl K; muévete con las flechas y entra con Intro.
Empezar

Contenidos

En esta página

ClientPageDefinition

interfaz

Opciones de ruta de una página que se renderiza en el navegador (render: "client"). Su bloque o sidecar entra en el bundle del cliente, así que no puede importar módulos de servidor; los datos deben llegar por endpoints de API o RPC protegidos.

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

Código fuente src/app/definitions/define-page.ts:437

Declaración #

ts
interface ClientPageDefinition<P extends PageSchema | undefined, S extends PageSchema | undefined, D> {
	readonly params?: P
	readonly search?: S
	readonly render: 'client'
	readonly prerenderEntries?: never
	readonly sitemapEntries?: never
	readonly load?: (args: ClientPageLoadContext<P, S>) => Promise<D> | D
	readonly head?: (args: ClientPageLoadContext<P, S> & { data: D }) => PageHead
	readonly layout?: unknown
	readonly layoutProps?: unknown
	readonly middleware?: readonly ClientRouteMiddlewareName[] | false
	readonly cache?: never
}

Parámetros de tipo #

P extends PageSchema | undefined

Schema de params, o undefined.

S extends PageSchema | undefined

Schema de search, o undefined.

D

Datos que devuelve load.

Ejemplo #

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

export const route = definePage({
  render: "client",
  load: async ({ signal }) => api.notes.list({ signal }),
  head: ({ data }) => ({ title: `${data.length} notas` }),
});

Propiedades #

params #

propiedad sólo lectura opcional

readonly params?: P

Schema de los parámetros de la ruta. El servidor los valida antes de enviar los layouts; una entrada inválida responde 400.

propiedad sólo lectura opcional

readonly search?: S

Schema de los parámetros de búsqueda, que se validan como params.

render #

propiedad sólo lectura

readonly render: 'client'

El servidor sólo renderiza los layouts y el navegador ejecuta load, head y la página. El HTML inicial no lleva los datos: es para vistas sin requisitos de SEO.

prerenderEntries #

propiedad sólo lectura opcional

readonly prerenderEntries?: never

Una página "client" no se puede prerenderizar: declararlo es un error de tipos y detiene meeko build.

sitemapEntries #

propiedad sólo lectura opcional desde 1.7.0

readonly sitemapEntries?: never

Una página "client" no declara URL del sitemap: sus opciones llegan al navegador. Declararlo es un error de tipos y detiene meeko build; una ruta sin parámetros ya está en el sitemap.

load #

propiedad sólo lectura opcional

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

Loader del navegador, con ClientPageLoadContext (sin request ni context): pide los datos a la API o al RPC. Lo que devuelve llega a la página como props.data.

propiedad sólo lectura opcional

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

Se ejecuta en el navegador después de load; su head se aplica al confirmar la página.

layout #

propiedad sólo lectura opcional desde 1.5.0

readonly layout?: unknown

Layout con nombre de la página, como en PageDefinition.layout.

layoutProps #

propiedad sólo lectura opcional desde 1.5.0

readonly layoutProps?: unknown

Props para el layout: un objeto, que el servidor ya aplica al HTML de los layouts, o una función que se ejecuta en el navegador después de load.

middleware #

propiedad sólo lectura opcional desde 1.6.0

readonly middleware?: readonly ClientRouteMiddlewareName[] | false

Middleware con nombre de la página, como en PageDefinition.middleware, sin los de servidor (*.server.ts): una página render: "client" no pide sus datos al servidor al navegar.

cache #

propiedad sólo lectura opcional desde 1.7.0

readonly cache?: never

Una página "client" no tiene caché de servidor: su HTML sólo lleva los layouts, y sus datos llegan por API o RPC. Declararla es un error de tipos y falla al cargar la ruta.

Véase también #

¿Te sirvió esta página?

Añadir un comentario

Se envía al elegir «Sí» o «No». Solo se guardan la página, tu respuesta y el comentario: ni cookies ni datos tuyos.

0 de 2000 caracteres

Editar en GitHub: packages/meeko/src/app/definitions/define-page.ts