# express-partial [![Build Status](https://travis-ci.org/uber/express-partial.png?branch=master)](https://travis-ci.org/uber/express-partial)

Adds partial rendering support to Express so that you can render multiple
templates in a single render call. Each template is provided its own template
data object on render and the method, by default, will respond to the request
with a json object containing the partial name and associated rendered html.
Useful for when your frontend wants to request multiple templates in parallel,
e.g. updating sections of a page using Ajax.

## Installation

``` bash
npm install express-partial
```

## Usage

express-partial is a middleware that adds a `renderPartials()` method to the
`res` object. Initialize it with:

``` js
var express = require('express');
var partial = require('express-partial');
var app = express();

app.use(partial());
```

Then, use it within your routes with:

``` js
app.get('/partials', function () {
  res.renderPartials({
    hello: { data: 'for hello template' },
    world: { data: 'for world template' }
  });
});
```
which will render something like:

``` json
{
  "hello": "<div>Hello template output</div>",
  "world": "<div>World template output</div>"
}
```

## Documentation

### `res.renderPartials(partials, callback)`

Render multiple partials and send a json body response with the partial name as
the object key and the rendered html string as its value. When a callback is
provided, the possible error and partial name/rendered html object are passed
and no automated response is performed.

- **partials** `Object` - An object of partial name => locals data to render
  - **name** `String` - The name of the partial to render
  - **locals** `Object` - The data object to send to the partial when rendering
- **callback** `Function` - A callback function that is passed `(err, renderedPartials)`
  - **err** `Error` - An error object when an error occurs during rendering
  - **renderedPartials** `Object` - An object of partial name => rendered html
