lr-server-renderer
Version:
Server side renderer for Lagoon road
33 lines (29 loc) • 784 B
JavaScript
const cheerio = require('cheerio');
module.exports = () => {
let output;
return {
template(template) {
output = cheerio.load(template);
},
render(html, placeholder) {
if (!output) {
throw new Error('Cannot add component, template has not been set');
}
if (output(placeholder).length === 0) {
throw new Error(`Renderer could not render, placeholder "${ placeholder }" not found`);
}
output(placeholder).empty();
output(placeholder).append(html);
},
state(state) {
output('#state').replaceWith(`<script>window.__state__ = ${ JSON.stringify(state) }</script>`);
},
html() {
if (output) {
return output.html().trim()
} else {
return '';
}
}
}
}