微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js – Expressjs中间件扩展res.render

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

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

一个更好的方法吗?

解决方法

您可能正在寻找 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,next) {
    res.locals({
        // e.g. session: req.session
    });
    next();
});

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐