|
|
@@ -1,7 +1,7 @@
|
|
|
import { decodeHTML } from 'entities'
|
|
|
import { parseHTML } from './html-parser'
|
|
|
import { parseText } from './text-parser'
|
|
|
-import { hyphenate, makeMap } from '../../shared/util'
|
|
|
+import { hyphenate, makeMap, cached } from '../../shared/util'
|
|
|
import {
|
|
|
getAndRemoveAttr,
|
|
|
addProp,
|
|
|
@@ -21,6 +21,8 @@ const forAliasRE = /(.*)\s+(?:in|of)\s+(.*)/
|
|
|
const forIteratorRE = /\((.*),(.*)\)/
|
|
|
const camelRE = /[a-z\d][A-Z]/
|
|
|
|
|
|
+const decodeHTMLCached = cached(decodeHTML)
|
|
|
+
|
|
|
// attributes that should be using props for binding
|
|
|
const mustUseProp = makeMap('value,selected,checked,muted')
|
|
|
|
|
|
@@ -155,7 +157,7 @@ export function parse (template, options) {
|
|
|
return
|
|
|
}
|
|
|
text = currentParent.tag === 'pre' || text.trim()
|
|
|
- ? decodeHTML(text)
|
|
|
+ ? decodeHTMLCached(text)
|
|
|
// only preserve whitespace if its not right after a starting tag
|
|
|
: options.preserveWhitespace && currentParent.children.length
|
|
|
? ' '
|