Exported from vue/server-renderer
Type
function renderToString( input: App | VNode, context?: SSRContext ): Promise<string>
Example
import { createSSRApp } from 'vue' import { renderToString } from 'vue/server-renderer' const app = createSSRApp({ data: () => ({ msg: 'hello' }), template: `<div>{{ msg }}</div>` }) ;(async () => { const html = await renderToString(app) console.log(html) })()
You can pass an optional context object, which can be used to record additional data during the render, for example accessing content of Teleports:
const ctx = {} const html = await renderToString(app, ctx) console.log(ctx.teleports) // { '#teleported': 'teleported content' }
Most other SSR APIs on this page also optionally accept a context object. The context object can be accessed in component code via the useSSRContext helper.
See also Guide - Server-Side Rendering
Renders input as a Node.js Readable stream.
Exported from vue/server-renderer
Type
function renderToNodeStream( input: App | VNode, context?: SSRContext ): Readable
Example
// inside a Node.js http handler renderToNodeStream(app).pipe(res)
This method is not supported in the ESM build of vue/server-renderer
, which is decoupled from Node.js environments. Use pipeToNodeWritable
instead.
Render and pipe to an existing Node.js Writable stream instance.
Exported from vue/server-renderer
Type
function pipeToNodeWritable( input: App | VNode, context: SSRContext = {}, writable: Writable ): void
Example
// inside a Node.js http handler pipeToNodeWritable(app, {}, res)
Renders input as a Web ReadableStream.
Exported from vue/server-renderer
Type
function renderToWebStream( input: App | VNode, context?: SSRContext ): ReadableStream
Example
// inside an environment with ReadableStream support return new Response(renderToWebStream(app))
In environments that do not expose ReadableStream
constructor in the global scope, pipeToWebWritable()
should be used instead.
Render and pipe to an existing Web WritableStream instance.
Exported from vue/server-renderer
Type
function pipeToWebWritable( input: App | VNode, context: SSRContext = {}, writable: WritableStream ): void
Example
This is typically used in combination with TransformStream
:
// TransformStream is available in environments such as CloudFlare workers. // in Node.js, TransformStream needs to be explicitly imported from 'stream/web' const { readable, writable } = new TransformStream() pipeToWebWritable(app, {}, writable) return new Response(readable)
Renders input in streaming mode using a simple readable interface.
Exported from vue/server-renderer
Type
function renderToSimpleStream( input: App | VNode, context: SSRContext, options: SimpleReadable ): SimpleReadable interface SimpleReadable { push(content: string | null): void destroy(err: any): void }
Example
let res = '' renderToSimpleStream( app, {}, { push(chunk) { if (chunk === null) { // done console(`render complete: ${res}`) } else { res += chunk } }, destroy(err) { // error encountered } } )
A runtime API used to retrieve the context object passed to renderToString()
or other server render APIs.
Type
function useSSRContext<T = Record<string, any>>(): T | undefined
Example
The retrieved context can be used to attach information that is needed for rendering the final HTML (e.g. head metadata).
<script setup> import { useSSRContext } from 'vue' // make sure to only call it during SSR // https://vitejs.dev/guide/ssr.html#conditional-logic if (import.meta.env.SSR) { const ctx = useSSRContext() // ...attach properties to the context } </script>
© 2013–present Yuxi Evan You
Licensed under the MIT License.
https://vuejs.org/api/ssr