Skip to content

compile()

Compile a template string into a reusable renderable object.

Signature

compile(templateStr, options = {})

Parameters

| Parameter | Type | Description |

|-----------|------|-------------|

| templateStr | string | Template source string |

| options | object | Options including views directories |

Returns

An object with these render methods:

| Method | Description |

|--------|-------------|

| render(contextObj, callOptions) | Synchronous render |

| renderWith(contextObj, callOptions) | Render with options override |

| asyncRender(contextObj) | Asynchronous render (supports async filters/tags) |

| asyncRenderWith(contextObj, callOptions) | Async render with options override |

| renderBlock(blockName, contextObj) | Render a single {% block %} |

| renderPartial(partialName, contextObj) | Render a named {% partialdef %} |

Examples

Basic compile

const { compile } = require('miki-template');



const compiled = compile('<h1>{{ title }}</h1>');



const html = compiled.render({ title: 'Hello' });

// Output: <h1>Hello</h1>
import { compile } from 'miki-template';



const compiled = compile('<h1>{{ title }}</h1>');



const html = compiled.render({ title: 'Hello' });

// Output: <h1>Hello</h1>

Render with options override

const { compile } = require('miki-template');



const compiled = compile(template, { views: './templates' });

const html = compiled.renderWith({ title: 'Hello' }, { views: './other-views' });
import { compile } from 'miki-template';



const compiled = compile(template, { views: './templates' });

const html = compiled.renderWith({ title: 'Hello' }, { views: './other-views' });

Render a Block (template inheritance)

const { compile } = require('miki-template');



const compiled = compile(childTemplate, { views: './templates' });

const html = compiled.renderBlock('content', context);
import { compile } from 'miki-template';



const compiled = compile(childTemplate, { views: './templates' });

const html = compiled.renderBlock('content', context);

Render a Partial

const { compile } = require('miki-template');



const compiled = compile(`

  {% partialdef card %}

    <div class="card">{{ title }}</div>

  {% endpartialdef %}

`);

const html = compiled.renderPartial('card', { title: 'Hello' });
import { compile } from 'miki-template';



const compiled = compile(`

  {% partialdef card %}

    <div class="card">{{ title }}</div>

  {% endpartialdef %}

`);

const html = compiled.renderPartial('card', { title: 'Hello' });