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.
import type { ClientPageDefinition } from "@meekojs/meeko/framework";Source code src/app/definitions/define-page.ts:437
Declaración #
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
}Type parameters #
-
Pextends PageSchema | undefined Schema de
params, oundefined.-
Sextends PageSchema | undefined Schema de
search, oundefined.-
D Datos que devuelve
load.
Example #
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
#
readonly params?: PSchema de los parámetros de la ruta. El servidor los valida antes de enviar los layouts; una entrada inválida responde 400.
render
#
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
#
readonly prerenderEntries?: neverUna página "client" no se puede prerenderizar: declararlo es un error de tipos y detiene meeko build.
sitemapEntries
#
readonly sitemapEntries?: neverUna 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
#
readonly load?: (args: ClientPageLoadContext<P, S>) => Promise<D> | DLoader 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.
head
#
readonly head?: (args: ClientPageLoadContext<P, S> & { data: D }) => PageHeadSe ejecuta en el navegador después de load; su head se aplica al confirmar la página.
layoutProps
#
readonly layoutProps?: unknownProps 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
#
readonly middleware?: readonly ClientRouteMiddlewareName[] | falseMiddleware 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
#
readonly cache?: neverUna 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.
See also #
- Rendering modes Framework full-stack