perf(compiler-sfc): ignore empty blocks (#3520)

This commit is contained in:
Cédric Exbrayat
2021-07-19 23:24:40 +02:00
committed by GitHub
parent 65f82ce94f
commit b771fdbef9
2 changed files with 19 additions and 1 deletions

View File

@@ -162,7 +162,8 @@ export function parse(
if (node.type !== NodeTypes.ELEMENT) {
return
}
if (!node.children.length && !hasSrc(node) && node.tag !== 'template') {
// we only want to keep the nodes that are not empty (when the tag is not a template)
if (node.tag !== 'template' && isEmpty(node) && !hasSrc(node)) {
return
}
switch (node.tag) {
@@ -415,3 +416,15 @@ function hasSrc(node: ElementNode) {
return p.name === 'src'
})
}
/**
* Returns true if the node has no children
* once the empty text nodes (trimmed content) have been filtered out.
*/
function isEmpty(node: ElementNode) {
return (
node.children.filter(
child => child.type !== NodeTypes.TEXT || child.content.trim() !== ''
).length === 0
)
}