使用nodejs或express render设置swig的全局变量

时间:2015-03-27 14:58:13

标签: node.js express global swig-template

我正在使用express和swig作为tpl引擎在节点中为自己放置一个引导框架。

我习惯使用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,是否可以将对象设置为始终传递给快速渲染功能?

由于 约翰

1 个答案:

答案 0 :(得分:0)

我找到了答案:

app.locals.siteDetails = require('./config/site');

然后,在模板中,您可以通过以下方式访问该对象:

{{siteDetails.googleAnalytics.trackingID}}