feat(ssr): compiler-ssr support for Suspense
This commit is contained in:
@@ -34,7 +34,7 @@ describe('ssr: components', () => {
|
||||
.toMatchInlineSnapshot(`
|
||||
"const { resolveDynamicComponent: _resolveDynamicComponent } = require(\\"vue\\")
|
||||
const { ssrRenderComponent: _ssrRenderComponent } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent) {
|
||||
_push(_ssrRenderComponent(_resolveDynamicComponent(_ctx.foo, _ctx.$), { prop: \\"b\\" }, null, _parent))
|
||||
}"
|
||||
@@ -269,7 +269,6 @@ describe('ssr: components', () => {
|
||||
})
|
||||
|
||||
test('built-in fallthroughs', () => {
|
||||
// no fragment
|
||||
expect(compile(`<transition><div/></transition>`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"
|
||||
@@ -278,7 +277,6 @@ describe('ssr: components', () => {
|
||||
}"
|
||||
`)
|
||||
|
||||
// wrap with fragment
|
||||
expect(compile(`<transition-group><div/></transition-group>`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"
|
||||
@@ -287,7 +285,6 @@ describe('ssr: components', () => {
|
||||
}"
|
||||
`)
|
||||
|
||||
// no fragment
|
||||
expect(compile(`<keep-alive><foo/></keep-alive>`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"const { resolveComponent: _resolveComponent } = require(\\"vue\\")
|
||||
@@ -299,28 +296,6 @@ describe('ssr: components', () => {
|
||||
_push(_ssrRenderComponent(_component_foo, null, null, _parent))
|
||||
}"
|
||||
`)
|
||||
|
||||
// wrap with fragment
|
||||
expect(compile(`<suspense><div/></suspense>`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"
|
||||
return function ssrRender(_ctx, _push, _parent) {
|
||||
_push(\`<div></div>\`)
|
||||
}"
|
||||
`)
|
||||
})
|
||||
|
||||
test('portal rendering', () => {
|
||||
expect(compile(`<portal :target="target"><div/></portal>`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"const { ssrRenderPortal: _ssrRenderPortal } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent) {
|
||||
_ssrRenderPortal((_push) => {
|
||||
_push(\`<div></div>\`)
|
||||
}, _ctx.target, _parent)
|
||||
}"
|
||||
`)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
16
packages/compiler-ssr/__tests__/ssrPortal.spec.ts
Normal file
16
packages/compiler-ssr/__tests__/ssrPortal.spec.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { compile } from '../src'
|
||||
|
||||
describe('ssr compile: portal', () => {
|
||||
test('should work', () => {
|
||||
expect(compile(`<portal :target="target"><div/></portal>`).code)
|
||||
.toMatchInlineSnapshot(`
|
||||
"const { ssrRenderPortal: _ssrRenderPortal } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent) {
|
||||
_ssrRenderPortal((_push) => {
|
||||
_push(\`<div></div>\`)
|
||||
}, _ctx.target, _parent)
|
||||
}"
|
||||
`)
|
||||
})
|
||||
})
|
||||
51
packages/compiler-ssr/__tests__/ssrSuspense.spec.ts
Normal file
51
packages/compiler-ssr/__tests__/ssrSuspense.spec.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { compile } from '../src'
|
||||
|
||||
describe('ssr compile: suspense', () => {
|
||||
test('implicit default', () => {
|
||||
expect(compile(`<suspense><foo/></suspense>`).code).toMatchInlineSnapshot(`
|
||||
"const { resolveComponent: _resolveComponent } = require(\\"vue\\")
|
||||
const { ssrRenderComponent: _ssrRenderComponent, ssrRenderSuspense: _ssrRenderSuspense } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent) {
|
||||
const _component_foo = _resolveComponent(\\"foo\\")
|
||||
|
||||
_push(_ssrRenderSuspense({
|
||||
default: (_push) => {
|
||||
_push(_ssrRenderComponent(_component_foo, null, null, _parent))
|
||||
},
|
||||
_: 1
|
||||
}))
|
||||
}"
|
||||
`)
|
||||
})
|
||||
|
||||
test('explicit slots', () => {
|
||||
expect(
|
||||
compile(`<suspense>
|
||||
<template #default>
|
||||
<foo/>
|
||||
</template>
|
||||
<template #fallback>
|
||||
loading...
|
||||
</template>
|
||||
</suspense>`).code
|
||||
).toMatchInlineSnapshot(`
|
||||
"const { resolveComponent: _resolveComponent } = require(\\"vue\\")
|
||||
const { ssrRenderComponent: _ssrRenderComponent, ssrRenderSuspense: _ssrRenderSuspense } = require(\\"@vue/server-renderer\\")
|
||||
|
||||
return function ssrRender(_ctx, _push, _parent) {
|
||||
const _component_foo = _resolveComponent(\\"foo\\")
|
||||
|
||||
_push(_ssrRenderSuspense({
|
||||
default: (_push) => {
|
||||
_push(_ssrRenderComponent(_component_foo, null, null, _parent))
|
||||
},
|
||||
fallback: (_push) => {
|
||||
_push(\` loading... \`)
|
||||
},
|
||||
_: 1
|
||||
}))
|
||||
}"
|
||||
`)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user