import { renderToString } from "@vue/server-renderer"; import { escapeInject, dangerouslySkipEscape } from "vite-plugin-ssr"; import { createApp } from "./app"; import logoUrl from "./logo.svg"; import type { PageContext } from "./types"; import type { PageContextBuiltIn } from "vite-plugin-ssr"; export { render }; // See https://vite-plugin-ssr.com/data-fetching export const passToClient = ["pageProps", "urlPathname"]; async function render(pageContext: PageContextBuiltIn & PageContext) { const app = createApp(pageContext); const appHtml = await renderToString(app); // See https://vite-plugin-ssr.com/head const { documentProps } = pageContext; const title = (documentProps && documentProps.title) || "Vite SSR app"; const desc = (documentProps && documentProps.description) || "App using Vite + vite-plugin-ssr"; const documentHtml = escapeInject` ${title}
${dangerouslySkipEscape(appHtml)}
`; return { documentHtml, pageContext: { // We can add some `pageContext` here, which is useful if we want to do page redirection https://vite-plugin-ssr.com/page-redirection }, }; }