From: Evan You Date: Thu, 16 Nov 2023 09:30:00 +0000 (+0800) Subject: perf: optimize away isBuiltInType X-Git-Tag: v3.4.0-alpha.2~46 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=66c0ed0a3c1c6f37dafc6b1c52b75c6bf60e3136;p=thirdparty%2Fvuejs%2Fcore.git perf: optimize away isBuiltInType --- diff --git a/packages/compiler-core/src/index.ts b/packages/compiler-core/src/index.ts index c88844a5c0..5ce3134fc1 100644 --- a/packages/compiler-core/src/index.ts +++ b/packages/compiler-core/src/index.ts @@ -71,4 +71,4 @@ export { CompilerDeprecationTypes } from './compat/compatConfig' -export { baseParse as newParse } from './parser/index' +// export { baseParse as newParse } from './parser/index' diff --git a/packages/compiler-core/src/transforms/vIf.ts b/packages/compiler-core/src/transforms/vIf.ts index 4e1673561c..c3b9f91a84 100644 --- a/packages/compiler-core/src/transforms/vIf.ts +++ b/packages/compiler-core/src/transforms/vIf.ts @@ -30,13 +30,7 @@ import { createCompilerError, ErrorCodes } from '../errors' import { processExpression } from './transformExpression' import { validateBrowserExpression } from '../validateExpression' import { FRAGMENT, CREATE_COMMENT } from '../runtimeHelpers' -import { - injectProp, - findDir, - findProp, - isBuiltInType, - getMemoedVNodeCall -} from '../utils' +import { injectProp, findDir, findProp, getMemoedVNodeCall } from '../utils' import { PatchFlags, PatchFlagNames } from '@vue/shared' export const transformIf = createStructuralDirectiveTransform( @@ -165,7 +159,8 @@ export function processIf( !( context.parent && context.parent.type === NodeTypes.ELEMENT && - isBuiltInType(context.parent.tag, 'transition') + (context.parent.tag === 'transition' || + context.parent.tag === 'Transition') ) ) { branch.children = [...comments, ...branch.children] diff --git a/packages/compiler-core/src/utils.ts b/packages/compiler-core/src/utils.ts index ee6beadbbf..ddb4b7f8d5 100644 --- a/packages/compiler-core/src/utils.ts +++ b/packages/compiler-core/src/utils.ts @@ -37,7 +37,7 @@ import { GUARD_REACTIVE_PROPS, WITH_MEMO } from './runtimeHelpers' -import { isString, isObject, hyphenate, extend, NOOP } from '@vue/shared' +import { isString, isObject, extend, NOOP } from '@vue/shared' import { PropsExpression } from './transforms/transformElement' import { parseExpression } from '@babel/parser' import { Expression } from '@babel/types' @@ -45,9 +45,6 @@ import { Expression } from '@babel/types' export const isStaticExp = (p: JSChildNode): p is SimpleExpressionNode => p.type === NodeTypes.SIMPLE_EXPRESSION && p.isStatic -export const isBuiltInType = (tag: string, expected: string): boolean => - tag === expected || tag === hyphenate(expected) - export function isCoreComponent(tag: string): symbol | void { switch (tag) { case 'Teleport': diff --git a/packages/compiler-dom/src/parserOptions.ts b/packages/compiler-dom/src/parserOptions.ts index 38e5e8b9d5..67b8f10b02 100644 --- a/packages/compiler-dom/src/parserOptions.ts +++ b/packages/compiler-dom/src/parserOptions.ts @@ -2,8 +2,7 @@ import { TextModes, ParserOptions, ElementNode, - NodeTypes, - isBuiltInType + NodeTypes } from '@vue/compiler-core' import { isVoidTag, isHTMLTag, isSVGTag } from '@vue/shared' import { TRANSITION, TRANSITION_GROUP } from './runtimeHelpers' @@ -23,9 +22,9 @@ export const parserOptions: ParserOptions = { decodeEntities: __BROWSER__ ? decodeHtmlBrowser : decodeHtml, isBuiltInComponent: (tag: string): symbol | undefined => { - if (isBuiltInType(tag, `Transition`)) { + if (tag === 'Transition' || tag === 'transition') { return TRANSITION - } else if (isBuiltInType(tag, `TransitionGroup`)) { + } else if (tag === 'TransitionGroup' || tag === 'transition-group') { return TRANSITION_GROUP } }, diff --git a/packages/compiler-ssr/src/transforms/ssrInjectCssVars.ts b/packages/compiler-ssr/src/transforms/ssrInjectCssVars.ts index d5c0daee7c..f11e62f6f4 100644 --- a/packages/compiler-ssr/src/transforms/ssrInjectCssVars.ts +++ b/packages/compiler-ssr/src/transforms/ssrInjectCssVars.ts @@ -6,8 +6,7 @@ import { createSimpleExpression, RootNode, TemplateChildNode, - findDir, - isBuiltInType + findDir } from '@vue/compiler-dom' export const ssrInjectCssVars: NodeTransform = (node, context) => { @@ -43,7 +42,7 @@ function injectCssVars(node: RootNode | TemplateChildNode) { node.tagType === ElementTypes.COMPONENT) && !findDir(node, 'for') ) { - if (isBuiltInType(node.tag, 'Suspense')) { + if (node.tag === 'suspense' || node.tag === 'Suspense') { for (const child of node.children) { if ( child.type === NodeTypes.ELEMENT && diff --git a/packages/compiler-ssr/src/transforms/ssrInjectFallthroughAttrs.ts b/packages/compiler-ssr/src/transforms/ssrInjectFallthroughAttrs.ts index 2b5c350a55..a54a7366f0 100644 --- a/packages/compiler-ssr/src/transforms/ssrInjectFallthroughAttrs.ts +++ b/packages/compiler-ssr/src/transforms/ssrInjectFallthroughAttrs.ts @@ -7,8 +7,7 @@ import { RootNode, TemplateChildNode, ParentNode, - findDir, - isBuiltInType + findDir } from '@vue/compiler-dom' const filterChild = (node: ParentNode) => @@ -28,8 +27,10 @@ export const ssrInjectFallthroughAttrs: NodeTransform = (node, context) => { if ( node.type === NodeTypes.ELEMENT && node.tagType === ElementTypes.COMPONENT && - (isBuiltInType(node.tag, 'Transition') || - isBuiltInType(node.tag, 'KeepAlive')) + (node.tag === 'transition' || + node.tag === 'Transition' || + node.tag === 'KeepAlive' || + node.tag === 'keep-alive') ) { const rootChildren = filterChild(context.root) if (rootChildren.length === 1 && rootChildren[0] === node) {