From: daiwei Date: Wed, 22 Jan 2025 04:05:53 +0000 (+0800) Subject: wip: v-skip X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=81992b0f8e9c11a89796572e45fa4aee06cb9de5;p=thirdparty%2Fvuejs%2Fcore.git wip: v-skip --- diff --git a/packages/compiler-core/src/ast.ts b/packages/compiler-core/src/ast.ts index 2d6df9d901..2956a4b3dc 100644 --- a/packages/compiler-core/src/ast.ts +++ b/packages/compiler-core/src/ast.ts @@ -144,6 +144,7 @@ export interface PlainElementNode extends BaseElementNode { | SimpleExpressionNode // when hoisted | CacheExpression // when cached by v-once | MemoExpression // when cached by v-memo + | ConditionalExpression | undefined ssrCodegenNode?: TemplateLiteral } diff --git a/packages/compiler-core/src/compile.ts b/packages/compiler-core/src/compile.ts index a697c9d22e..637d31c519 100644 --- a/packages/compiler-core/src/compile.ts +++ b/packages/compiler-core/src/compile.ts @@ -22,6 +22,7 @@ import { transformModel } from './transforms/vModel' import { transformFilter } from './compat/transformFilter' import { ErrorCodes, createCompilerError, defaultOnError } from './errors' import { transformMemo } from './transforms/vMemo' +import { transformSkip } from './transforms/vSkip' export type TransformPreset = [ NodeTransform[], @@ -35,6 +36,7 @@ export function getBaseTransformPreset( [ transformOnce, transformIf, + transformSkip, transformMemo, transformFor, ...(__COMPAT__ ? [transformFilter] : []), diff --git a/packages/compiler-core/src/errors.ts b/packages/compiler-core/src/errors.ts index 58e113ab19..42466168e9 100644 --- a/packages/compiler-core/src/errors.ts +++ b/packages/compiler-core/src/errors.ts @@ -90,6 +90,8 @@ export enum ErrorCodes { X_V_MODEL_ON_PROPS, X_INVALID_EXPRESSION, X_KEEP_ALIVE_INVALID_CHILDREN, + X_V_SKIP_NO_EXPRESSION, + X_V_SKIP_ON_TEMPLATE, // generic errors X_PREFIX_ID_NOT_SUPPORTED, @@ -179,6 +181,8 @@ export const errorMessages: Record = { [ErrorCodes.X_INVALID_EXPRESSION]: `Error parsing JavaScript expression: `, [ErrorCodes.X_KEEP_ALIVE_INVALID_CHILDREN]: ` expects exactly one child component.`, [ErrorCodes.X_VNODE_HOOKS]: `@vnode-* hooks in templates are no longer supported. Use the vue: prefix instead. For example, @vnode-mounted should be changed to @vue:mounted. @vnode-* hooks support has been removed in 3.4.`, + [ErrorCodes.X_V_SKIP_NO_EXPRESSION]: `v-skip is missing expression.`, + [ErrorCodes.X_V_SKIP_ON_TEMPLATE]: `v-skip cannot be used on