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('...',{
        // ...
    });
});

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...