【问题标题】:Setting global variables for swig with nodejs or express render使用 nodejs 或 express 渲染为 swig 设置全局变量
【发布时间】:2015-04-05 05:34:47
【问题描述】:

我正在使用 express 和 swig 作为 tpl 引擎在 node 中为自己构建一个引导框架。

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

谢谢 约翰

【问题讨论】:

标签: node.js express global swig-template


【解决方案1】:

我找到了答案:

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

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

{{siteDetails.googleAnalytics.trackingID}}

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多