【问题标题】:Node.js - Expressjs middleware to extend res.renderNode.js - Expressjs 中间件扩展 res.render
【发布时间】:2012-12-22 04:35:07
【问题描述】:

我想知道是否有内置的方法来扩展 Express.js 的 res.render 函数,因为我想将一组默认的“locals”传递给每个渲染的模板。目前我已经编写了一个小型中间件,它使用 underscore.js 的扩展函数来合并默认的“locals”和特定于该模板的那些:

app.use(function(req, res, next){
    res.render2 = function (view, locals, fn) {
        res.render(view, _.extend(settings.template_defaults, locals), fn);
    };
    next();
});

有没有更好的方法来做到这一点?

【问题讨论】:

  • 你想做什么?

标签: node.js express middleware


【解决方案1】:

app.locals 可能是您要查找的内容:

app.locals(settings.template_defaults);

除了res.localsres.render,Express 已经能够为您合并值:

// locals for all views in the application
app.locals(settings.template_defaults);

// middleware for common locals with request-specific values
app.use(function (req, res, next) {
    res.locals({
        // e.g. session: req.session
    });
    next();
});

// and locals specific to the route
app.get('...', function (req, res) {
    res.render('...', {
        // ...
    });
});

【讨论】:

  • 它是res.locals,虽然链接没问题(无法编辑 1 个符号)。
  • 感谢@Jonathan Lonowski,这正是我所需要的!
【解决方案2】:
res.locals or app.locals is for this exact purpose.

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2020-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-03-02
    • 2014-04-07
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多