使用 nodejs 或 express render 为 swig 设置全局变量
Setting global variables for swig with nodejs or express render
我正在使用 express 和 swig 作为 tpl 引擎在节点中为自己构建一个 bootstrap 框架。
我习惯于使用诸如 ezpublish 之类的框架,其中可以从 tpl 代码中提取 ini 设置。我其实不喜欢这种方式。
然而,总会有多个地方需要的内容,例如:
//general site details
module.exports = {
'siteName' : 'my site',
'emails' : {
'noReply' : 'no-reply@mysite.com',
'accouts' : 'accounts@mysite.com',
'support' : 'support@mysite.com'
},
'website': 'www.mysite.com',
'googleAnalytics': {
'trackingID': 'UA-123321213-1'
}
};
我希望能够始终为应用程序使用的任何 swig 模板提供上述信息。有没有办法将它们定义为全局变量,这样我就不必在每条路线上都通过它们?
在每条路线上都这样做似乎很疯狂:
app.get('/profile', isLoggedIn, function(req, res) {
res.render('private/profile.html', {
user : req.user,
siteDetails: siteDetails /* this should be automatic */
});
});
如果无法使用 swig tpl 引擎设置 gloabls,是否可以将对象设置为始终传递给快速渲染功能?
谢谢
约翰
我找到了答案:
app.locals.siteDetails = require('./config/site');
然后在模板中,您可以通过以下方式访问对象:
{{siteDetails.googleAnalytics.trackingID}}
我正在使用 express 和 swig 作为 tpl 引擎在节点中为自己构建一个 bootstrap 框架。
我习惯于使用诸如 ezpublish 之类的框架,其中可以从 tpl 代码中提取 ini 设置。我其实不喜欢这种方式。
然而,总会有多个地方需要的内容,例如:
//general site details
module.exports = {
'siteName' : 'my site',
'emails' : {
'noReply' : 'no-reply@mysite.com',
'accouts' : 'accounts@mysite.com',
'support' : 'support@mysite.com'
},
'website': 'www.mysite.com',
'googleAnalytics': {
'trackingID': 'UA-123321213-1'
}
};
我希望能够始终为应用程序使用的任何 swig 模板提供上述信息。有没有办法将它们定义为全局变量,这样我就不必在每条路线上都通过它们?
在每条路线上都这样做似乎很疯狂:
app.get('/profile', isLoggedIn, function(req, res) {
res.render('private/profile.html', {
user : req.user,
siteDetails: siteDetails /* this should be automatic */
});
});
如果无法使用 swig tpl 引擎设置 gloabls,是否可以将对象设置为始终传递给快速渲染功能?
谢谢 约翰
我找到了答案:
app.locals.siteDetails = require('./config/site');
然后在模板中,您可以通过以下方式访问对象:
{{siteDetails.googleAnalytics.trackingID}}