/ / Node.js - Expressjs Middleware zur Erweiterung von res.render - node.js, express, Middleware

Node.js - Expressjs Middleware zur Erweiterung von res.render - node.js, express, Middleware

Ich würde gerne wissen, ob es einen eingebauten Weg gibtextendieren Sie die res.render-Funktion von Express.js, weil ich gerne eine Standardmenge von "locals" an jede Vorlage weitergeben würde, die gerendert wird. Derzeit habe ich eine kleine Middleware geschrieben, die die extend-Funktion von undercore.js verwendet, um die Standard-Locals und die für diese Vorlage spezifischen zu kombinieren:

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

Gibt es einen besseren Weg, dies zu tun?

Antworten:

7 für die Antwort № 1

app.locals ist wahrscheinlich das, wonach du suchst:

app.locals(settings.template_defaults);

Zusammen mit res.locals und res.render, Express ist bereits in der Lage, die Werte für Sie zusammenzuführen:

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

3 für die Antwort № 2
res.locals or app.locals is for this exact purpose.