我在使用express.js中的handlebars.js hbs wrapper。我的模板工作正常,但我需要添加部分以使用我的視圖進行渲染。Express.js hbs模塊 - 從.hbs文件註冊偏好
我想要做這樣的事情:
hbs.registerPartial('headPartial', 'header');
// where "header" is an .hbs file in my views folder
然而,它拋出一個「頭部分無法找到」。
我可以使registerPartial工作,如果我傳遞一個HTML字符串到第二個參數,但我想爲我的partials使用單獨的視圖文件。
我還沒有找到這方面的任何文件,但希望我可能只是想失去一些容易。
有誰知道如何使用registerPartial方法中的視圖文件?如果是這樣,我該如何執行此操作?
UPDATE
爲了讓更多的方面,我要添加更多的代碼。 這裏是我的 「服務器」 文件 - app.js
var express = require('express')
, routes = require('./routes')
, hbs = require('hbs');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// this is the line that generates the error
hbs.registerPartial('headPartial', 'header');
// What I'm expecting is for "headPartial" to be a compiled template partial
// of the template within views/header.hbs, but it is not loading this way.
// If I do something like hbs.registerPartial('headPartial', '<p>test</p>');
// then it does work. I need to know how to pass an .hbs file to the
// registerPartial method.
// Routes
app.get('/', routes.index);
app.listen(3000);
這裏是我的routes.index文件:
exports.index = function(req, res){
res.render('index', { title: 'Express' })
};
在我的意見的文件夾,我有三個模板:
views/
header.hbs (this is my partial)
index.hbs
layout.hbs
在我的index.hbs文件中,我打電話給'headPartial'部分:
{{> headPartial}}
任何幫助,非常感謝。
尼斯的諧音。在需要時可以快速獲得所有部分! – swatkins
謝謝Ben,這真的幫了很大忙。 – Dave