refactor: use more efficient walk for importUsageCheck
This commit is contained in:
parent
37f9d3da8f
commit
b59eabdc0d
|
@ -5,8 +5,8 @@ import {
|
||||||
SimpleExpressionNode,
|
SimpleExpressionNode,
|
||||||
forAliasRE,
|
forAliasRE,
|
||||||
parserOptions,
|
parserOptions,
|
||||||
transform,
|
walkIdentifiers,
|
||||||
walkIdentifiers
|
TemplateChildNode
|
||||||
} from '@vue/compiler-dom'
|
} from '@vue/compiler-dom'
|
||||||
import { createCache } from '../cache'
|
import { createCache } from '../cache'
|
||||||
import { camelize, capitalize, isBuiltInDirective } from '@vue/shared'
|
import { camelize, capitalize, isBuiltInDirective } from '@vue/shared'
|
||||||
|
@ -34,10 +34,12 @@ function resolveTemplateUsageCheckString(sfc: SFCDescriptor) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let code = ''
|
let code = ''
|
||||||
transform(ast, {
|
|
||||||
nodeTransforms: [
|
ast!.children.forEach(walk)
|
||||||
node => {
|
|
||||||
if (node.type === NodeTypes.ELEMENT) {
|
function walk(node: TemplateChildNode) {
|
||||||
|
switch (node.type) {
|
||||||
|
case NodeTypes.ELEMENT:
|
||||||
if (
|
if (
|
||||||
!parserOptions.isNativeTag!(node.tag) &&
|
!parserOptions.isNativeTag!(node.tag) &&
|
||||||
!parserOptions.isBuiltInComponent!(node.tag)
|
!parserOptions.isBuiltInComponent!(node.tag)
|
||||||
|
@ -73,14 +75,13 @@ function resolveTemplateUsageCheckString(sfc: SFCDescriptor) {
|
||||||
code += `,${prop.value.content}`
|
code += `,${prop.value.content}`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (node.type === NodeTypes.INTERPOLATION) {
|
node.children.forEach(walk)
|
||||||
code += `,${processExp(
|
break
|
||||||
(node.content as SimpleExpressionNode).content
|
case NodeTypes.INTERPOLATION:
|
||||||
)}`
|
code += `,${processExp((node.content as SimpleExpressionNode).content)}`
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
|
||||||
})
|
|
||||||
|
|
||||||
code += ';'
|
code += ';'
|
||||||
templateUsageCheckCache.set(content, code)
|
templateUsageCheckCache.set(content, code)
|
||||||
|
|
Loading…
Reference in New Issue