Search code examples
javascriptnode.jsexpresshandlebars.jsexpress-handlebars

How can I use Handlebars with Express?


The question is actually not difficult to understand, I do not know how to implement handlebars in Express.

That's what I've already coded:

var express = require('express');
var app = express();

app.get('/', function (req, res, next) {
        return res.render('index');
});

Now is my question, how to set handlebars as app engine for express?


Solution

  • Here is the code as I currently use and learned. I have added a note behind every important line so that you understand it well!

    var express = require('express');
    var app = express();
    var handlebars = require('express-handlebars');
    
    app.engine('handlebars', handlebars({ // Here we define what format you will use (That means what's at the end of each file, for example test.handlebars or test.hbs)
        defaultLayout: 'main', // That's the name of your template file. In my case it's main.handlebars
        layoutsDir: __dirname + '/views/layouts/' // That's the directory where the template file is
    }));
    
    app.set('views', path.join(__dirname, 'views')); // Here you give express the information that it has to look at all files that are in the path /views
    app.set('view engine', 'handlebars'); // Here you say express that you are using handlebars to build your website
    
    app.get('/home', function (req, res, next) { // That's a simple GET request (This GET request gets triggered when you enter http://localhost/home for example)
            return res.render('index');  // Here we render the index.handlebars file (that is in the /views folder)
    });