# Underscore

Render a Underscore template.

## `renderTemplate(template, [values])` ⇨ `String`

Renders a Underscore template and returns a string. This function is also available inside the template.

**Returns**: `String` - Rendered template

| Param     | Type     | Default | Description          |
| --------- | -------- | ------- | -------------------- |
| template  | `String` |         | Underscore template. |
| \[values] | `Object` | `{}`    | Values.              |

### Examples

**Simple example**

```javascript
import { renderTemplate } from '@soleil-se/app-util/server';


const string = renderTemplate('<div><%= foo %></div>', {
  foo: 'bar',
});
```

**Multiple templates**

**views/item.html**

```html
<li>
  <%- name %>
</li>
```

**views/main.html**

```html
<ul>
  <% items.forEach(function(item) { %>
    <%= renderTemplate(itemTemplate, item) %>
  <% }); %>
</ul>
```

```javascript
import { renderTemplate } from '@soleil-se/app-util/server';
import mainTemplate from './views/main.html';
import itemTemplate from './views/item.html';


const items = [{ name: 'Foo' }, { name: 'Bar' }, { name: 'Baz' }];
const string = renderTemplate(mainTemplate, { items, itemTemplate });
```

> **NOTE** Remember that the second argument must be an object and that objects properties are accessed directly in any child templates!