mirror of
https://github.com/nuxt/nuxt.git
synced 2025-02-21 07:59:33 +00:00
perf(nuxt): skip adding selective-client code if not enabled (#26176)
This commit is contained in:
parent
f772e564c8
commit
6723123a2e
@ -259,29 +259,31 @@ export default defineComponent({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (import.meta.server) {
|
if (selectiveClient) {
|
||||||
for (const [id, info] of Object.entries(payloads.components ?? {})) {
|
if (import.meta.server) {
|
||||||
const { html, slots } = info
|
for (const [id, info] of Object.entries(payloads.components ?? {})) {
|
||||||
let replaced = html.replaceAll('data-island-uid', `data-island-uid="${uid.value}"`)
|
const { html, slots } = info
|
||||||
for (const slot in slots) {
|
let replaced = html.replaceAll('data-island-uid', `data-island-uid="${uid.value}"`)
|
||||||
replaced = replaced.replaceAll(`data-island-slot="${slot}">`, full => full + slots[slot])
|
for (const slot in slots) {
|
||||||
}
|
replaced = replaced.replaceAll(`data-island-slot="${slot}">`, full => full + slots[slot])
|
||||||
teleports.push(createVNode(Teleport, { to: `uid=${uid.value};client=${id}` }, {
|
|
||||||
default: () => [createStaticVNode(replaced, 1)]
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
} else if (selectiveClient && import.meta.client && canLoadClientComponent.value) {
|
|
||||||
for (const [id, info] of Object.entries(payloads.components ?? {})) {
|
|
||||||
const { props, slots } = info
|
|
||||||
const component = components!.get(id)!
|
|
||||||
// use different selectors for even and odd teleportKey to force trigger the teleport
|
|
||||||
const vnode = createVNode(Teleport, { to: `${isKeyOdd ? 'div' : ''}[data-island-uid='${uid.value}'][data-island-component="${id}"]` }, {
|
|
||||||
default: () => {
|
|
||||||
return [h(component, props, Object.fromEntries(Object.entries(slots || {}).map(([k, v]) => ([k, () => createStaticVNode(`<div style="display: contents" data-island-uid data-island-slot="${k}">${v}</div>`, 1)
|
|
||||||
]))))]
|
|
||||||
}
|
}
|
||||||
})
|
teleports.push(createVNode(Teleport, { to: `uid=${uid.value};client=${id}` }, {
|
||||||
teleports.push(vnode)
|
default: () => [createStaticVNode(replaced, 1)]
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
} else if (canLoadClientComponent.value) {
|
||||||
|
for (const [id, info] of Object.entries(payloads.components ?? {})) {
|
||||||
|
const { props, slots } = info
|
||||||
|
const component = components!.get(id)!
|
||||||
|
// use different selectors for even and odd teleportKey to force trigger the teleport
|
||||||
|
const vnode = createVNode(Teleport, { to: `${isKeyOdd ? 'div' : ''}[data-island-uid='${uid.value}'][data-island-component="${id}"]` }, {
|
||||||
|
default: () => {
|
||||||
|
return [h(component, props, Object.fromEntries(Object.entries(slots || {}).map(([k, v]) => ([k, () => createStaticVNode(`<div style="display: contents" data-island-uid data-island-slot="${k}">${v}</div>`, 1)
|
||||||
|
]))))]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
teleports.push(vnode)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user