All posts tagged express

  • How to Exclude Layout Files When Rendering Templates With Node.js and Express

    I struggled with this for a good half-hour and I figured I’d share in case anyone else ran into this issue. Long story short, I needed to return an HTML fragment for a particular ajax request from the app (in this case, search results) but the response always included the layout file I configured for the app:

        hbsEngine = expressHbs.create({
            extname: 'hbs',
            defaultLayout: 'layout.hbs',
            helpers: {
                formatDate: function (date, format) {
                    return moment(date).format(format);
                }
            }
        });
    

    Read more

  • Formatting Dates Using Moment.js, Handlebars, Express, and Node.js

    For those of you out there that may be struggling with this, here’s a quick breakdown of how to format dates using moment.js, handlebars, express, and node.js. This post assumes you have the following packages installed in your express app:

    1. Express3 Handlebars (link)
    2. Moment.js (link)

    Once you’ve included these packages in your app.js file, you’ll need to set up handlebars like so:

    ...
    app = express();
    hbsEngine = expressHbs.create({
        extname: 'hbs',
        defaultLayout: 'layout.hbs',
        helpers: {
            formatDate: function (date, format) {
                return moment(date).format(format);
            }
        }
    });
    
    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.engine('hbs', hbsEngine.engine);
    app.set('view engine', 'hbs');
    ...
    

    You can ignore the extname and defaultLayout configs incase you want to use the default values that handlebars sets for you for the extension and layout file name. The important thing to note is the helpers object. Basically, it’s the equivalent of the registerHelpers method in the JS version of Handlebars. In this example, I’m create a formatDate method that takes in a date and “format“ string and returns a formatted date via moment.js.