diff --git a/packages/compiler-core/src/ast.ts b/packages/compiler-core/src/ast.ts index bae13372a..dfcc1bef3 100644 --- a/packages/compiler-core/src/ast.ts +++ b/packages/compiler-core/src/ast.ts @@ -163,6 +163,7 @@ export interface ComponentNode extends BaseElementNode { | MemoExpression // when cached by v-memo | undefined ssrCodegenNode?: CallExpression + anchor?: string } export interface SlotOutletNode extends BaseElementNode { @@ -172,6 +173,7 @@ export interface SlotOutletNode extends BaseElementNode { | CacheExpression // when cached by v-once | undefined ssrCodegenNode?: CallExpression + anchor?: string } export interface TemplateNode extends BaseElementNode { @@ -287,6 +289,7 @@ export interface IfNode extends Node { type: NodeTypes.IF branches: IfBranchNode[] codegenNode?: IfConditionalExpression | CacheExpression //
+ anchor?: string } export interface IfBranchNode extends Node { @@ -306,6 +309,7 @@ export interface ForNode extends Node { parseResult: ForParseResult children: TemplateChildNode[] codegenNode?: ForCodegenNode + anchor?: string } export interface ForParseResult { diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts index 99020bcf1..0b5dcca8f 100644 --- a/packages/compiler-core/src/codegen.ts +++ b/packages/compiler-core/src/codegen.ts @@ -167,6 +167,7 @@ function createCodegenContext( ssr = false, isTS = false, inSSR = false, + vapor = false, }: CodegenOptions, ): CodegenContext { const context: CodegenContext = { @@ -182,6 +183,7 @@ function createCodegenContext( ssr, isTS, inSSR, + vapor, source: ast.source, code: ``, column: 1, diff --git a/packages/compiler-core/src/options.ts b/packages/compiler-core/src/options.ts index 998307160..03a32e011 100644 --- a/packages/compiler-core/src/options.ts +++ b/packages/compiler-core/src/options.ts @@ -220,6 +220,11 @@ interface SharedTransformCodegenOptions { * @default 'template.vue.html' */ filename?: string + + /** + * Indicates vapor component + */ + vapor?: boolean } export interface TransformOptions diff --git a/packages/compiler-core/src/transform.ts b/packages/compiler-core/src/transform.ts index 10121fb5d..11077df62 100644 --- a/packages/compiler-core/src/transform.ts +++ b/packages/compiler-core/src/transform.ts @@ -146,6 +146,7 @@ export function createTransformContext( slotted = true, ssr = false, inSSR = false, + vapor = false, ssrCssVars = ``, bindingMetadata = EMPTY_OBJ, inline = false, @@ -173,6 +174,7 @@ export function createTransformContext( slotted, ssr, inSSR, + vapor, ssrCssVars, bindingMetadata, inline, diff --git a/packages/compiler-sfc/src/compileTemplate.ts b/packages/compiler-sfc/src/compileTemplate.ts index 29d1853d2..1d832388f 100644 --- a/packages/compiler-sfc/src/compileTemplate.ts +++ b/packages/compiler-sfc/src/compileTemplate.ts @@ -253,6 +253,7 @@ function doCompileTemplate({ slotted, sourceMap: true, ...compilerOptions, + vapor, hmr: !isProd, nodeTransforms: nodeTransforms.concat( compilerOptions.nodeTransforms || [], diff --git a/packages/compiler-ssr/__tests__/ssrComponent.spec.ts b/packages/compiler-ssr/__tests__/ssrComponent.spec.ts index fb2fff865..2fde4560e 100644 --- a/packages/compiler-ssr/__tests__/ssrComponent.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrComponent.spec.ts @@ -39,7 +39,6 @@ describe('ssr: components', () => { return function ssrRender(_ctx, _push, _parent, _attrs) { _ssrRenderVNode(_push, _createVNode(_resolveDynamicComponent("foo"), _mergeProps({ prop: "b" }, _attrs), null), _parent) - _push(\`\`) }" `) @@ -50,7 +49,6 @@ describe('ssr: components', () => { return function ssrRender(_ctx, _push, _parent, _attrs) { _ssrRenderVNode(_push, _createVNode(_resolveDynamicComponent(_ctx.foo), _mergeProps({ prop: "b" }, _attrs), null), _parent) - _push(\`\`) }" `) }) @@ -246,8 +244,7 @@ describe('ssr: components', () => { _ssrRenderList(list, (i) => { _push(\`\`) }) - _push(\`
\`) - _push(\`\`) + _push(\`\`) } else { _push(\`\`) } @@ -270,8 +267,7 @@ describe('ssr: components', () => { _ssrRenderList(_ctx.list, (i) => { _push(\`\`) }) - _push(\`\`) - _push(\`\`) + _push(\`\`) } else { _push(\`\`) } @@ -365,7 +361,6 @@ describe('ssr: components', () => { _push(\`\`) if (false) { _push(\`\`) - _push(\`\`) } else { _push(\`\`) } diff --git a/packages/compiler-ssr/__tests__/ssrElement.spec.ts b/packages/compiler-ssr/__tests__/ssrElement.spec.ts index 57e4f022c..f1d509acf 100644 --- a/packages/compiler-ssr/__tests__/ssrElement.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrElement.spec.ts @@ -396,50 +396,4 @@ describe('ssr: element', () => { `) }) }) - - describe('dynamic anchor', () => { - test('two consecutive components', () => { - expect( - getCompiledString(` -
-
- - -
-
- `), - ).toMatchInlineSnapshot(` - "\`
\`) - _push(_ssrRenderComponent(_component_Comp1, null, null, _parent)) - _push(\`\`) - _push(_ssrRenderComponent(_component_Comp2, null, null, _parent)) - _push(\`
\`" - `) - }) - - test('multiple consecutive components', () => { - expect( - getCompiledString(` -
-
- - - - -
-
- `), - ).toMatchInlineSnapshot(` - "\`
\`) - _push(_ssrRenderComponent(_component_Comp1, null, null, _parent)) - _push(\`\`) - _push(_ssrRenderComponent(_component_Comp2, null, null, _parent)) - _push(\`\`) - _push(_ssrRenderComponent(_component_Comp3, null, null, _parent)) - _push(\`\`) - _push(_ssrRenderComponent(_component_Comp4, null, null, _parent)) - _push(\`
\`" - `) - }) - }) }) diff --git a/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts b/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts index 712c09d09..7b3d1962c 100644 --- a/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrFallthroughAttrs.spec.ts @@ -29,7 +29,6 @@ describe('ssr: attrs fallthrough', () => { _push(\`\`) if (true) { _push(\`
\`) - _push(\`\`) } else { _push(\`\`) } diff --git a/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts b/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts index e8e7dfb25..9e70dac0b 100644 --- a/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts @@ -70,14 +70,12 @@ describe('ssr: inject