@gluonjs/ssr / packages/ssr/src / SsrRequestOptions
Interface: SsrRequestOptions<Data>
Type Parameters
Data
Data = undefined
Properties
assets?
readonlyoptionalassets?:AssetManifest
createApp
readonlycreateApp: (context) =>GluonApp
Parameters
context
SsrRequestContext<Data>
Returns
load?
readonlyoptionalload?: (context) =>Data|Promise<Data>
Parameters
context
Omit<SsrRequestContext<Data>, "data">
Returns
Data | Promise<Data>
nonce?
readonlyoptionalnonce?:string
routes?
readonlyoptionalroutes?: readonlyRouteRecordRaw[] | ((store) => readonlyRouteRecordRaw[])
signal?
readonlyoptionalsignal?:AbortSignal
state?
readonlyoptionalstate?:Readonly<Record<string,unknown>>
styles?
readonlyoptionalstyles?:StyleManifestSource
url
readonlyurl:string
Example
Describe the URL, route table, request loader, and application factory needed for one isolated SSR request:
import { createApp, html } from '@gluonjs/core';
import { renderRequest, type SsrRequestContext, type SsrRequestOptions, type SsrRequestResult } from '@gluonjs/ssr';
type ReportData = { title: string };
const options = {
url: '/reports/41',
routes: [{ path: '/reports/:id', name: 'report' }],
load: ({ router }: Omit<SsrRequestContext<ReportData>, 'data'>) => ({ title: `Report ${router.currentRoute.value.params.id}` }),
createApp: ({ data }) => createApp(() => html`<main>${data.title}</main>`),
} satisfies SsrRequestOptions<ReportData>;
const response: SsrRequestResult = await renderRequest(options);
console.log(response.html, response.stateScript);