From f6e579765fc0e20fea89fc53a34b9e19431029e7 Mon Sep 17 00:00:00 2001 From: Liran Tal Date: Mon, 29 Aug 2016 08:32:21 +0300 Subject: [PATCH] feat(express): introducing handlebars nodejs template system (#1461) This commit introduces handlebars template system and completely replacing Swig and the Consolidate project to handle multiple template systems. Fixes #1286 --- config/env/default.js | 1 - config/lib/express.js | 11 +++++------ .../server/controllers/core.server.controller.js | 2 +- modules/core/server/views/404.server.view.html | 6 +++--- modules/core/server/views/500.server.view.html | 6 +++--- modules/core/server/views/index.server.view.html | 6 +++--- .../core/server/views/layout.server.view.html | 16 ++++++++-------- package.json | 3 +-- 8 files changed, 24 insertions(+), 27 deletions(-) diff --git a/config/env/default.js b/config/env/default.js index 7407501214..d863253625 100644 --- a/config/env/default.js +++ b/config/env/default.js @@ -9,7 +9,6 @@ module.exports = { }, port: process.env.PORT || 3000, host: process.env.HOST || '0.0.0.0', - templateEngine: 'swig', // Session Cookie settings sessionCookie: { // session expiration is set by default to 24 hours diff --git a/config/lib/express.js b/config/lib/express.js index d166d40e29..13898b902b 100644 --- a/config/lib/express.js +++ b/config/lib/express.js @@ -16,7 +16,7 @@ var config = require('../config'), cookieParser = require('cookie-parser'), helmet = require('helmet'), flash = require('connect-flash'), - consolidate = require('consolidate'), + hbs = require('express-hbs'), path = require('path'), _ = require('lodash'), lusca = require('lusca'); @@ -99,12 +99,11 @@ module.exports.initMiddleware = function (app) { * Configure view engine */ module.exports.initViewEngine = function (app) { - // Set swig as the template engine - app.engine('server.view.html', consolidate[config.templateEngine]); - - // Set views path and view engine + app.engine('server.view.html', hbs.express4({ + extname: '.server.view.html' + })); app.set('view engine', 'server.view.html'); - app.set('views', './'); + app.set('views', path.resolve('./')); }; /** diff --git a/modules/core/server/controllers/core.server.controller.js b/modules/core/server/controllers/core.server.controller.js index 4c2f3af651..ed9b044065 100644 --- a/modules/core/server/controllers/core.server.controller.js +++ b/modules/core/server/controllers/core.server.controller.js @@ -24,7 +24,7 @@ exports.renderIndex = function (req, res) { } res.render('modules/core/server/views/index', { - user: safeUserObject + user: JSON.stringify(safeUserObject) }); }; diff --git a/modules/core/server/views/404.server.view.html b/modules/core/server/views/404.server.view.html index d5c785f63a..c2e659b24e 100644 --- a/modules/core/server/views/404.server.view.html +++ b/modules/core/server/views/404.server.view.html @@ -1,10 +1,10 @@ -{% extends 'layout.server.view.html' %} +{{!< layout}} -{% block content %} +{{#contentFor 'content'}}

Page Not Found

-{% endblock %} +{{/contentFor}} diff --git a/modules/core/server/views/500.server.view.html b/modules/core/server/views/500.server.view.html index 34359bfae5..eefb20a48c 100644 --- a/modules/core/server/views/500.server.view.html +++ b/modules/core/server/views/500.server.view.html @@ -1,8 +1,8 @@ -{% extends 'layout.server.view.html' %} +{{!< layout}} -{% block content %} +{{#contentFor 'content'}}

Server Error

   {{error}}
 
-{% endblock %} +{{/contentFor}} diff --git a/modules/core/server/views/index.server.view.html b/modules/core/server/views/index.server.view.html index 262a52ec95..9e3bbccaee 100644 --- a/modules/core/server/views/index.server.view.html +++ b/modules/core/server/views/index.server.view.html @@ -1,5 +1,5 @@ -{% extends 'layout.server.view.html' %} +{{!< layout}} -{% block content %} +{{#contentFor 'content'}}
-{% endblock %} +{{/contentFor}} diff --git a/modules/core/server/views/layout.server.view.html b/modules/core/server/views/layout.server.view.html index 6018dd53d8..d73272454a 100644 --- a/modules/core/server/views/layout.server.view.html +++ b/modules/core/server/views/layout.server.view.html @@ -1,4 +1,4 @@ - + @@ -32,14 +32,14 @@ - {% for cssFile in cssFiles %}{% endfor %} + {{#each cssFiles}}{{/each}}
- {% block content %}{% endblock %} + {{{block "content"}}}
@@ -56,20 +56,20 @@ - {% for jsFile in jsFiles %}{% endfor %} + {{#each jsFiles}}{{/each}} - {% if livereload %} + {{#if livereload}} - {% endif %} + {{/if}} diff --git a/package.json b/package.json index 58dcaf457a..db8ab9e9d2 100644 --- a/package.json +++ b/package.json @@ -40,10 +40,10 @@ "compression": "~1.6.1", "connect-flash": "~0.1.1", "connect-mongo": "~1.1.0", - "consolidate": "~0.14.0", "cookie-parser": "~1.4.1", "crypto": "0.0.3", "express": "~4.14.0", + "express-hbs": "^1.0.2", "express-session": "~1.13.0", "file-stream-rotator": "~0.0.6", "generate-password": "~1.1.1", @@ -73,7 +73,6 @@ "phantomjs-prebuilt": "~2.1.4", "serve-favicon": "~2.3.0", "socket.io": "~1.4.5", - "swig": "~1.4.2", "validator": "~5.1.0", "winston": "^2.2.0", "wiredep": "~4.0.0"