app.engine()
Registers a template engine callback for a given file extension.
Syntax
app.engine(ext, callback) Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ext | string | Yes | The file extension to map, e.g. `'hbs'`. |
callback | function | Yes | `(path, options, callback)` rendering function. |
Returns
Application — The app instance, for chaining.
Examples
import { engine } from 'express-handlebars';
app.engine('handlebars', engine());
app.set('view engine', 'handlebars');
app.set('views', './views');
// Custom engine
app.engine('txt', (filePath, options, cb) => {
cb(null, `Rendered ${filePath} for ${options.name}`);
});
app.set('view engine', 'txt');
Output
Rendered /views/x.txt for Ada
Notes
Most popular engines (EJS, Pug) auto-register via `consolidate` or
their own integration, so you only need `app.set('view engine')`.
Use `app.engine` for engines whose module name differs from the
extension, or for custom renderers.