nodejs web框架搭建 express + handlebars

以前用的django,php+smarty,顺着思路搭建下nodejs web

jade 模板优点缺点都比较突出,适合简洁更个的网页
EJS 和大多数模板风格类似,但是语法难看些。
handlebars 语法上是我比较偏向的,而且它有个express3-handlebars,方便使用模板继承功能(虽然有点弱)
ericf/express3-handlebars · GitHub

模板继承在其他语言模板引擎如smarty,django的默认的都是标配的,便于页面复用是include一个很好的补充

这里就不说详细配置步骤,nodejs 还没有入门的先补习下基础文档

先建立 express 工程

app.js 下注释掉 app.set(‘view engine’, ‘jade’);

npm install express3-handlebars

app.js 添加

var exphbs = require('express3-handlebars');

// 这是注册handlebars模板,这里默认模板文件扩展名 .html
app.engine('html', exphbs({defaultLayout: 'main',extname: '.html'}));
app.set('view engine', 'html');

这样就算配置完成了

下面说下使用

 

app.get('/', function (req, res) {
    res.render('home');
});

这样就可以渲染模板了,它默认或继承 main.html 模板

如果不想当前模板继承默认main.html 添加{layout:false}

app.get('/', function (req, res, next) {
    res.render('home', {layout: false});
});

如果不想继承默认模板,换其他的呢,官方没有给出例子,我测试了下以下方式可以行得通

app.get('/', function (req, res, next) {
    res.render('home', {layout: "other"});
});

{ layout: “other” } 即 other.html