Sie es einfach als ein Objekt in dem zweiten Argument render()
app.get('/someurl', function(req, res, next) {
res.render('filename', {query : req.query});
});
Sie auch die locals
Variable
können
app.get('/someurl', function(req, res, next) {
res.locals.query = req.query;
res.render('filename');
});
, die sehr nützlich, wenn sie mit einer allgemeinen Route verwendet wird, passieren kann, dass läuft vor allen anderen Routen und macht die Variable in allen folgenden Routen verfügbar
app.use(function(req, res, next) {
res.locals.query = req.query;
res.locals.url = req.originalUrl;
next();
});
und es ist in der Datei sind Sie als query
etc Rendering
<% if (query == "something") { %>
<div id="crazy_shit">
<a href="<%- url -%>">Here</a>
</div>
<% } %>
Als Nebenbemerkung, wenn query
aus irgendeinem Grund nicht definiert ist, wird ein Fehler in EJS erhalten für eine nicht definierte Variable, was nervig sein kann.
Normalerweise löse ich dies, indem ich stattdessen ein Objekt verwende, da das Überprüfen von Objekteigenschaften keine Fehler auslöst und es einfach ist sicherzustellen, dass das Objekt immer einen Anfangswert oben in jeder EJS-Vorlage hat.
Es ist wie dies in den Routen
app.user(function(req, res, next) {
res.locals.stuff = {
query : req.query,
url : req.originalUrl
}
next();
});
Und dann in der
<% stuff = typeof stuff !== 'object' ? {} : stuff %>
// later on
<% if (stuff.query == "something") { %>//does not throw error if property not defined
<div id="crazy_shit"></div>
<% } %>
Vorlage gemacht, welche auch wenn stuff.query
definiert ist, nicht die Bedingung gerade und es einen Fehler nicht werfen, wie es würde wenn stuff
selbst oder eine andere Variable nicht definiert wurde.
Sie können auch eine benutzerdefinierte Middleware vor der Routing-Middleware wie folgt haben: 'app.use (Funktion (req, res, next)) {res.locals.some_var = 'var'; next();}); '. Auf diese Weise wird die Variable in allen Ansichten verfügbar sein. Nützlich, um 'req'-Daten wie den URL-Pfad für die Navigation zu übergeben. – diosney