async-htm-to-string
Renders a htm
tagged template asyncly into a string.
Usage
Simple
npm install async-htm-to-string
const { html, renderToString } = require('async-htm-to-string');
const customTag = ({ prefix }, children) => html`<div>${prefix}-${children}</div>`;
const dynamicContent = 'bar';
const result = await renderToString(html`<${customTag} prefix="foo">${dynamicContent}</${customTag}>`);
API
html
Is h()
bound to htm
(htm.bind(h)
). Used with template literals, like:
const renderableElement = html`<div>${content}</div>`;
rawHtml / rawHtml(rawString)
If you need to provide pre-escaped raw HTML content, then you can use rawHtml
as either a template literal or by calling it with the
const renderableElement = rawHtml`<div>&${'"'}</div>`;
const renderableElement = rawHtml('<div>&</div>');
You can also use the result of any of those rawHtml
inside html
, like:
const renderableElement = html`<div>${rawHtml`&`}</div>`;
h(type, props, ...children)
The inner method that's htm
is bound to.
render(renderableElement)
Takes the output from html
and returns an async iterator that yields the strings as they are rendered
renderToString(renderableElement)
Same as render()
, but asyncly returns a single string with the fully rendered result, rather than an async iterator.
Helpers
generatorToString(somethingIterable)
Asyncly loops over an iterable (like eg. an async iterable) and concatenates together the result into a single string that it resolves to. The brains behind renderToString()
.