improve <svelte:element> SSR

pull/12335/head
Rich Harris 2 years ago
parent 7bfc74f19c
commit 0bdb35efd8

@ -1352,11 +1352,17 @@ const template_visitors = {
context.visit(node.fragment, state)
);
const body = b.block([
b.stmt(b.call('$.element', b.id('$$payload'), tag, b.thunk(attributes), b.thunk(children)))
]);
context.state.template.push(block_open, b.if(tag, body), block_close);
context.state.template.push(
b.stmt(
b.call(
'$.element',
b.id('$$payload'),
tag,
attributes.body.length > 0 && b.thunk(attributes),
children.body.length > 0 && b.thunk(children)
)
)
);
if (context.state.options.dev) {
context.state.template.push(b.stmt(b.call('$.pop_element')));

@ -72,7 +72,10 @@ export function assign_payload(p1, p2) {
* @param {() => void} children_fn
* @returns {void}
*/
export function element(payload, tag, attributes_fn, children_fn) {
export function element(payload, tag, attributes_fn = noop, children_fn = noop) {
payload.out += `<!---->`;
if (tag) {
payload.out += `<${tag} `;
attributes_fn();
payload.out += `>`;
@ -84,6 +87,9 @@ export function element(payload, tag, attributes_fn, children_fn) {
}
payload.out += `</${tag}>`;
}
}
payload.out += `<!---->`;
}
/**

@ -1,17 +1,17 @@
<!--[-->
<!--[-->
<!---->
<title>lorem</title>
<!--]-->
<!--[-->
<!---->
<!---->
<style>
.ipsum {
display: block;
}
</style>
<!--]-->
<!--[-->
<!---->
<!---->
<script>
console.log(true);
</script>
<!--]-->
<!---->
<!--]-->

@ -3,11 +3,5 @@ import * as $ from "svelte/internal/server";
export default function Svelte_element($$payload, $$props) {
let { tag = 'hr' } = $$props;
$$payload.out += `<!--[-->`;
if (tag) {
$.element($$payload, tag, () => {}, () => {});
}
$$payload.out += `<!--]-->`;
$.element($$payload, tag);
}
Loading…
Cancel
Save