使用 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}}