feat(ssr): compiler-ssr support for Suspense

This commit is contained in:
Evan You
2020-03-10 16:52:08 -04:00
parent 47ead3b33a
commit 80c625dce3
10 changed files with 404 additions and 166 deletions

View File

@@ -0,0 +1,19 @@
import { PushFn, ResolvedSSRBuffer, createBuffer } from '../renderToString'
import { NOOP } from '@vue/shared'
type ContentRenderFn = (push: PushFn) => void
export async function ssrRenderSuspense({
default: renderContent = NOOP,
fallback: renderFallback = NOOP
}: Record<string, ContentRenderFn | undefined>): Promise<ResolvedSSRBuffer> {
try {
const { push, getBuffer } = createBuffer()
renderContent(push)
return await getBuffer()
} catch {
const { push, getBuffer } = createBuffer()
renderFallback(push)
return getBuffer()
}
}