# Views

## What is a View?

We briefly introduced you to views when we discussed [binding actions to static views](https://blueprint.onehilltech.com/routers-and-controllers/routers#static-views) in the router definition. Views are well-defined, reusable representation of a response to a request. Views can be static—meaning there are no variable definitions in the view, or dynamic—meaning there are variable portions in the view.

{% hint style="info" %}
All views are located in `app/views`.
{% endhint %}

## Supported View Types

Blueprint does not have its own, proprietary view type. Instead, Blueprint support any view type (*i.e.*, template engine) supported by [consolidate.js](https://github.com/tj/consolidate.js/). You just have to

1. Install the node module for the template engine you plan to use for your view type; and
2. The extension of the view must match the name of its corresponding template engine.

For example, if you want to use [pug](https://github.com/pugjs/pug) as the template engine for your views, then your views must have the file extension in `.pug`. Likewise, if you want to use [handlebars](https://handlebarsjs.com/), then your views must have the file extension `.handlebars`.

{% hint style="info" %}
Blueprint will automatically configure Express to support the different kinds of views located in `app/views`. There is no need to manually register the different template engines with Express.
{% endhint %}
