我希望能够传递一个全局对象,我稍后会将其用于任何玉石模板
让我们说:
app.get("/", function(req, res){
var options = {
chGlobal : {// this is the object i want to be a global
"property1" : 1,
"property2" : 2,
"property3" : 3,
}
};
jade.renderFile(__dirname +'/tpl/main.jade', options, function (err, html) {
console.log(err, html);
if (err)
{
throw err
}
else
{
res.send(html);
}
});
});
我希望能够使用" chGlobal"在其他加载的脚本中。好像chGlobal是在全球范围内定义的。
由于
答案 0 :(得分:4)
如果你通过express使用jade作为视图引擎,如下所示:
app.set('views', __dirname); // this will be where your views are located.
app.set('view engine', 'jade');
您可以使用 res.locals.variable 指定局部变量。
实施例)
app.get("/", function(req, res){
res.locals.options = {
chGlobal : {// this is the object i want to be a global
"property1" : 1,
"property2" : 2,
"property3" : 3,
}
};
res.render('main');
});
然后在Jade中,您可以访问选项变量。
您可以编写一个中间件来自动附加全局变量,如下所示:
app.get("/", registerGlobals, function(req, res) {
然后中间件功能将是:
function registerGlobals(req, res, next) {
res.locals.options = {
chGlobal : {// this is the object i want to be a global
"property1" : 1,
"property2" : 2,
"property3" : 3,
}
};
next();
}
有关如何在这里使用jade的更多教程:http://runnable.com/UTlPPF-f2W1TAAEe/render-jade-with-express-for-node-js