feat(vue): handle template querySelector
This commit is contained in:
parent
ec2feeafad
commit
c8895e7cb9
@ -1,15 +1,38 @@
|
|||||||
// This package is the "full-build" that includes both the runtime
|
// This package is the "full-build" that includes both the runtime
|
||||||
// and the compiler, and supports on-the-fly compilation of the template option.
|
// and the compiler, and supports on-the-fly compilation of the template option.
|
||||||
import { compile, CompilerOptions } from '@vue/compiler-dom'
|
import { compile, CompilerOptions } from '@vue/compiler-dom'
|
||||||
import { registerRuntimeCompiler, RenderFunction } from '@vue/runtime-dom'
|
import { registerRuntimeCompiler, RenderFunction, warn } from '@vue/runtime-dom'
|
||||||
import * as runtimeDom from '@vue/runtime-dom'
|
import * as runtimeDom from '@vue/runtime-dom'
|
||||||
|
import { isString, NOOP } from '@vue/shared'
|
||||||
|
|
||||||
|
const idToTemplateCache = Object.create(null)
|
||||||
|
|
||||||
function compileToFunction(
|
function compileToFunction(
|
||||||
template: string,
|
template: string | HTMLElement,
|
||||||
options?: CompilerOptions
|
options?: CompilerOptions
|
||||||
): RenderFunction {
|
): RenderFunction {
|
||||||
const { code } = compile(template, {
|
if (isString(template)) {
|
||||||
|
if (template[0] === '#') {
|
||||||
|
if (template in idToTemplateCache) {
|
||||||
|
template = idToTemplateCache[template]
|
||||||
|
} else {
|
||||||
|
const el = document.querySelector(template)
|
||||||
|
if (__DEV__ && !el) {
|
||||||
|
warn(`Template element not found or is empty: ${template}`)
|
||||||
|
}
|
||||||
|
template = idToTemplateCache[template] = el ? el.innerHTML : ``
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (template.nodeType) {
|
||||||
|
template = template.innerHTML
|
||||||
|
} else {
|
||||||
|
__DEV__ && warn(`invalid template option: `, template)
|
||||||
|
return NOOP
|
||||||
|
}
|
||||||
|
|
||||||
|
const { code } = compile(template as string, {
|
||||||
hoistStatic: true,
|
hoistStatic: true,
|
||||||
|
cacheHandlers: true,
|
||||||
...options
|
...options
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user