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 № 1app.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.