server-side <:Head>

pull/1024/head
Rich Harris 8 years ago
parent 50654fab88
commit ed44f7d1fa

@ -110,14 +110,14 @@ export default function ssr(
components.add(component); components.add(component);
} }
var result = { title: null, addComponent }; var result = { head: '', addComponent };
var html = ${name}._render(result, state, options); var html = ${name}._render(result, state, options);
var cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\\n'); var cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\\n');
return { return {
html, html,
title: result.title, head: result.head,
css: { code: cssCode, map: null }, css: { code: cssCode, map: null },
toString() { toString() {
return result.html; return result.html;

@ -2,17 +2,18 @@ import { SsrGenerator } from '../index';
import Block from '../Block'; import Block from '../Block';
import { Node } from '../../../interfaces'; import { Node } from '../../../interfaces';
import stringifyAttributeValue from './shared/stringifyAttributeValue'; import stringifyAttributeValue from './shared/stringifyAttributeValue';
import visit from '../visit';
export default function visitDocument( export default function visitDocument(
generator: SsrGenerator, generator: SsrGenerator,
block: Block, block: Block,
node: Node node: Node
) { ) {
throw new Error('TODO'); generator.append('${(__result.head += `');
// const title = node.attributes.find(attribute => attribute.type === 'Attribute' && attribute.name === 'title'); node.children.forEach((child: Node) => {
visit(generator, block, child);
});
// if (title) { generator.append('`, "")}');
// generator.append('${(__result.title = `' + stringifyAttributeValue(block, title.value) + '`, "")}');
// }
} }

@ -11,14 +11,14 @@ SvelteComponent.render = function(state, options = {}) {
components.add(component); components.add(component);
} }
var result = { title: null, addComponent }; var result = { head: '', addComponent };
var html = SvelteComponent._render(result, state, options); var html = SvelteComponent._render(result, state, options);
var cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\n'); var cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\n');
return { return {
html, html,
title: result.title, head: result.head,
css: { code: cssCode, map: null }, css: { code: cssCode, map: null },
toString() { toString() {
return result.html; return result.html;

@ -13,14 +13,14 @@ SvelteComponent.render = function(state, options = {}) {
components.add(component); components.add(component);
} }
var result = { title: null, addComponent }; var result = { head: '', addComponent };
var html = SvelteComponent._render(result, state, options); var html = SvelteComponent._render(result, state, options);
var cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\n'); var cssCode = Array.from(components).map(c => c.css && c.css.code).filter(Boolean).join('\n');
return { return {
html, html,
title: result.title, head: result.head,
css: { code: cssCode, map: null }, css: { code: cssCode, map: null },
toString() { toString() {
return result.html; return result.html;

@ -1,6 +1,4 @@
export default { export default {
solo: true,
data: { data: {
adjective: 'custom' adjective: 'custom'
}, },

@ -59,7 +59,7 @@ describe("ssr", () => {
const data = tryToLoadJson(`${dir}/data.json`); const data = tryToLoadJson(`${dir}/data.json`);
const { html, css, title } = component.render(data); const { html, css, head } = component.render(data);
fs.writeFileSync(`${dir}/_actual.html`, html); fs.writeFileSync(`${dir}/_actual.html`, html);
if (css.code) fs.writeFileSync(`${dir}/_actual.css`, css.code); if (css.code) fs.writeFileSync(`${dir}/_actual.css`, css.code);
@ -70,10 +70,11 @@ describe("ssr", () => {
expectedCss.replace(/^\s+/gm, "") expectedCss.replace(/^\s+/gm, "")
); );
if (fs.existsSync(`${dir}/title.txt`)) { if (fs.existsSync(`${dir}/_expected-head.html`)) {
assert.equal( fs.writeFileSync(`${dir}/_actual-head.html`, head);
title, assert.htmlEqual(
fs.readFileSync(`${dir}/title.txt`, 'utf-8') head,
fs.readFileSync(`${dir}/_expected-head.html`, 'utf-8')
); );
} }

Loading…
Cancel
Save