Skip to content

Commit 58b5bcd

Browse files
committed
refactor: hydration
1 parent 541ba07 commit 58b5bcd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+3339
-3341
lines changed

packages/compiler-core/src/ast.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ export interface ComponentNode extends BaseElementNode {
163163
| MemoExpression // when cached by v-memo
164164
| undefined
165165
ssrCodegenNode?: CallExpression
166+
anchor?: string
166167
}
167168

168169
export interface SlotOutletNode extends BaseElementNode {
@@ -172,12 +173,14 @@ export interface SlotOutletNode extends BaseElementNode {
172173
| CacheExpression // when cached by v-once
173174
| undefined
174175
ssrCodegenNode?: CallExpression
176+
anchor?: string
175177
}
176178

177179
export interface TemplateNode extends BaseElementNode {
178180
tagType: ElementTypes.TEMPLATE
179181
// TemplateNode is a container type that always gets compiled away
180182
codegenNode: undefined
183+
anchor?: string
181184
}
182185

183186
export interface TextNode extends Node {
@@ -287,6 +290,7 @@ export interface IfNode extends Node {
287290
type: NodeTypes.IF
288291
branches: IfBranchNode[]
289292
codegenNode?: IfConditionalExpression | CacheExpression // <div v-if v-once>
293+
anchor?: string
290294
}
291295

292296
export interface IfBranchNode extends Node {
@@ -306,6 +310,7 @@ export interface ForNode extends Node {
306310
parseResult: ForParseResult
307311
children: TemplateChildNode[]
308312
codegenNode?: ForCodegenNode
313+
anchor?: string
309314
}
310315

311316
export interface ForParseResult {

packages/compiler-core/src/codegen.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ export interface CodegenContext
136136
| 'inline'
137137
| 'vaporRuntimeModuleName'
138138
| 'expressionPlugins'
139+
| 'vapor'
139140
> {
140141
source: string
141142
code: string

packages/compiler-core/src/options.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,11 @@ interface SharedTransformCodegenOptions {
220220
* @default 'template.vue.html'
221221
*/
222222
filename?: string
223+
224+
/**
225+
* Indicates vapor component
226+
*/
227+
vapor?: boolean
223228
}
224229

225230
export interface TransformOptions

packages/compiler-core/src/transform.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ export function createTransformContext(
146146
slotted = true,
147147
ssr = false,
148148
inSSR = false,
149+
vapor = false,
149150
ssrCssVars = ``,
150151
bindingMetadata = EMPTY_OBJ,
151152
inline = false,
@@ -173,6 +174,7 @@ export function createTransformContext(
173174
slotted,
174175
ssr,
175176
inSSR,
177+
vapor,
176178
ssrCssVars,
177179
bindingMetadata,
178180
inline,

packages/compiler-sfc/src/compileScript.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,11 @@ export function compileScript(
980980
ctx.hasDefineExposeCall || options.inlineTemplate ? `` : ` __expose();\n`
981981
// wrap setup code with function.
982982
if (ctx.isTS) {
983+
// in SSR, always use defineComponent, so __vapor flag is required
984+
if (ssr && vapor) {
985+
runtimeOptions += `\n __vapor: true,`
986+
}
987+
983988
// for TS, make sure the exported type is still valid type with
984989
// correct props information
985990
// we have to use object spread for types to be merged properly

packages/compiler-sfc/src/compileTemplate.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ function doCompileTemplate({
253253
slotted,
254254
sourceMap: true,
255255
...compilerOptions,
256+
vapor,
256257
hmr: !isProd,
257258
nodeTransforms: nodeTransforms.concat(
258259
compilerOptions.nodeTransforms || [],

packages/compiler-ssr/__tests__/ssrComponent.spec.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ describe('ssr: components', () => {
3939
4040
return function ssrRender(_ctx, _push, _parent, _attrs) {
4141
_ssrRenderVNode(_push, _createVNode(_resolveDynamicComponent("foo"), _mergeProps({ prop: "b" }, _attrs), null), _parent)
42-
_push(\`<!--dynamic-component-->\`)
4342
}"
4443
`)
4544

@@ -50,7 +49,6 @@ describe('ssr: components', () => {
5049
5150
return function ssrRender(_ctx, _push, _parent, _attrs) {
5251
_ssrRenderVNode(_push, _createVNode(_resolveDynamicComponent(_ctx.foo), _mergeProps({ prop: "b" }, _attrs), null), _parent)
53-
_push(\`<!--dynamic-component-->\`)
5452
}"
5553
`)
5654
})
@@ -246,8 +244,7 @@ describe('ssr: components', () => {
246244
_ssrRenderList(list, (i) => {
247245
_push(\`<span\${_scopeId}></span>\`)
248246
})
249-
_push(\`<!--]--><!--for--></div>\`)
250-
_push(\`<!--if-->\`)
247+
_push(\`<!--]--></div>\`)
251248
} else {
252249
_push(\`<!---->\`)
253250
}
@@ -270,8 +267,7 @@ describe('ssr: components', () => {
270267
_ssrRenderList(_ctx.list, (i) => {
271268
_push(\`<span\${_scopeId}></span>\`)
272269
})
273-
_push(\`<!--]--><!--for--></div>\`)
274-
_push(\`<!--if-->\`)
270+
_push(\`<!--]--></div>\`)
275271
} else {
276272
_push(\`<!---->\`)
277273
}
@@ -365,7 +361,6 @@ describe('ssr: components', () => {
365361
_push(\`\`)
366362
if (false) {
367363
_push(\`<div\${_scopeId}></div>\`)
368-
_push(\`<!--if-->\`)
369364
} else {
370365
_push(\`<!---->\`)
371366
}

packages/compiler-ssr/__tests__/ssrElement.spec.ts

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -396,50 +396,4 @@ describe('ssr: element', () => {
396396
`)
397397
})
398398
})
399-
400-
describe('dynamic anchor', () => {
401-
test('two consecutive components', () => {
402-
expect(
403-
getCompiledString(`
404-
<div>
405-
<div/>
406-
<Comp1/>
407-
<Comp2/>
408-
<div/>
409-
</div>
410-
`),
411-
).toMatchInlineSnapshot(`
412-
"\`<div><div></div>\`)
413-
_push(_ssrRenderComponent(_component_Comp1, null, null, _parent))
414-
_push(\`<!--[[-->\`)
415-
_push(_ssrRenderComponent(_component_Comp2, null, null, _parent))
416-
_push(\`<!--]]--><div></div></div>\`"
417-
`)
418-
})
419-
420-
test('multiple consecutive components', () => {
421-
expect(
422-
getCompiledString(`
423-
<div>
424-
<div/>
425-
<Comp1/>
426-
<Comp2/>
427-
<Comp3/>
428-
<Comp4/>
429-
<div/>
430-
</div>
431-
`),
432-
).toMatchInlineSnapshot(`
433-
"\`<div><div></div>\`)
434-
_push(_ssrRenderComponent(_component_Comp1, null, null, _parent))
435-
_push(\`<!--[[-->\`)
436-
_push(_ssrRenderComponent(_component_Comp2, null, null, _parent))
437-
_push(\`<!--]]--><!--[[-->\`)
438-
_push(_ssrRenderComponent(_component_Comp3, null, null, _parent))
439-
_push(\`<!--]]-->\`)
440-
_push(_ssrRenderComponent(_component_Comp4, null, null, _parent))
441-
_push(\`<div></div></div>\`"
442-
`)
443-
})
444-
})
445399
})

packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ describe('ssr: attrs fallthrough', () => {
2929
_push(\`<!--[-->\`)
3030
if (true) {
3131
_push(\`<div></div>\`)
32-
_push(\`<!--if-->\`)
3332
} else {
3433
_push(\`<!---->\`)
3534
}

packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ describe('ssr: inject <style vars>', () => {
7070
const _cssVars = { style: { color: _ctx.color }}
7171
if (_ctx.ok) {
7272
_push(\`<div\${_ssrRenderAttrs(_mergeProps(_attrs, _cssVars))}></div>\`)
73-
_push(\`<!--if-->\`)
7473
} else {
7574
_push(\`<!--[--><div\${
7675
_ssrRenderAttrs(_cssVars)

0 commit comments

Comments
 (0)