improve performance of render_ssr

pull/6898/head
Yuichiro Yamashita 5 years ago
parent b34b0ca6a6
commit 49bef3afc3

@ -24,7 +24,7 @@ export default function (node: Element, renderer: Renderer, options: RenderOptio
); );
renderer.add_string('<'); renderer.add_string('<');
renderer.add_expression(node.tag_expr.node as ESExpression); add_tag_name();
const class_expression_list = node.classes.map(class_directive => { const class_expression_list = node.classes.map(class_directive => {
const { expression, name } = class_directive; const { expression, name } = class_directive;
@ -162,9 +162,17 @@ export default function (node: Element, renderer: Renderer, options: RenderOptio
function add_close_tag() { function add_close_tag() {
if (!is_void(node.name)) { if (!is_void(node.name)) {
renderer.add_string('</'); renderer.add_string('</');
renderer.add_expression(node.tag_expr.node as ESExpression); add_tag_name();
renderer.add_string('>'); renderer.add_string('>');
} }
} }
function add_tag_name() {
if (node.tag_expr.node.type === 'Literal') {
renderer.add_string(node.tag_expr.node.value as string);
} else {
renderer.add_expression(node.tag_expr.node as ESExpression);
}
}
} }

@ -7,10 +7,10 @@ const Component = create_ssr_component(($$result, $$props, $$bindings, slots) =>
if ($$props.things === void 0 && $$bindings.things && things !== void 0) $$bindings.things(things); if ($$props.things === void 0 && $$bindings.things && things !== void 0) $$bindings.things(things);
if ($$props.foo === void 0 && $$bindings.foo && foo !== void 0) $$bindings.foo(foo); if ($$props.foo === void 0 && $$bindings.foo && foo !== void 0) $$bindings.foo(foo);
return `${each(things, thing => `<${"span"}>${escape(thing.name)}</${"span"}> return `${each(things, thing => `<span>${escape(thing.name)}</span>
${debug(null, 7, 2, { foo })}`)} ${debug(null, 7, 2, { foo })}`)}
<${"p"}>foo: ${escape(foo)}</${"p"}>`; <p>foo: ${escape(foo)}</p>`;
}); });
export default Component; export default Component;

@ -2,9 +2,9 @@
import { create_ssr_component } from "svelte/internal"; import { create_ssr_component } from "svelte/internal";
const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => { const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => {
return `<${"div"}>content</${"div"}> return `<div>content</div>
<!-- comment --> <!-- comment -->
<${"div"}>more content</${"div"}>`; <div>more content</div>`;
}); });
export default Component; export default Component;

Loading…
Cancel
Save