Node.js - Express - Handlebars - Ex 2 #nodejs - #javascript - #programming code=yes // app2.js var express = require('express'); var exphbs = require('express-handlebars'); var simple = require('./simple'); var app = express(); app.engine('handlebars', exphbs({defaultLayout: 'main'})); app.set('view engine', 'handlebars'); app.get('/', simple.home); app.get('/simple', simple.gorilla); app.listen(3000); /////////////////////////////////////////////// // simple.js var PageGlobals = require('./pageglobals'); var globals = new PageGlobals(); var simpleControllers = { 'home': function (req, res) { var data = {default_values: globals.getvalues()}; res.render('home', data); }, 'gorilla': function (req, res) { var data = {name: 'Gorilla', default_values: globals.getvalues()}; res.render('simple', data); } }; module.exports = simpleControllers; /////////////////////////////////////////////// pageglobals.js require('./modules/date.format'); var myDate = new Date(); var dt_str = myDate.format('D, M j, Y - g:i a') + " UTC"; // constructor var PageGlobals = function() { }; PageGlobals.prototype.getvalues = function() { var page_values = { datetime: dt_str, title: 'nodejs testing', app: 'app2.js' }; return page_values; }; module.exports = PageGlobals; /////////////////////////////////////////////// // date.format.js created by: // http://github.com/jacwright/date.format /////////////////////////////////////////////// // /views/ directory: // home.handlebars {{> header}}

home.handlebars

{{> footer}} // simple.handlebars {{> header}}

simple.handlebars

name = {{name}}

{{> footer}} // /views/partials/ directory: // header.handlebars {{default_values.app}} - {{default_values.title}} // footer.handlebars

{{default_values.datetime}}

// /views/layouts/ directory: // main.handlebars {{{body}}} /////////////////////////////////////////////// $ curl http://localhost:3000 $ curl http://localhost:3000/simple