Ответ 1
Вы можете легко передать его как объект во втором аргументе render()
app.get('/someurl', function(req, res, next) {
res.render('filename', {query : req.query});
});
Вы также можете использовать переменную locals
app.get('/someurl', function(req, res, next) {
res.locals.query = req.query;
res.render('filename');
});
что очень полезно при использовании с общим маршрутом, который выполняется перед всеми другими маршрутами, делая переменную доступной во всех следующих маршрутах
app.use(function(req, res, next) {
res.locals.query = req.query;
res.locals.url = req.originalUrl;
next();
});
и он доступен в файле, который вы показываете как query
и т.д.
<% if (query == "something") { %>
<div id="crazy_shit">
<a href="<%- url -%>">Here</a>
</div>
<% } %>
Как побочный элемент, если query
по какой-либо причине не определен, вы получите сообщение об ошибке в EJS для использования переменной undefined, что может раздражать.
Я обычно решаю это, используя вместо этого объект, поскольку проверка свойств объекта не вызывает ошибок, и легко убедиться, что объект всегда имеет начальное значение в верхней части каждого шаблона EJS.
Это делается на маршрутах
app.user(function(req, res, next) {
res.locals.stuff = {
query : req.query,
url : req.originalUrl
}
next();
});
И затем в шаблоне
<% stuff = typeof stuff !== 'object' ? {} : stuff %>
// later on
<% if ( stuff.query == "something") { %>//does not throw error if property not defined
<div id="crazy_shit"></div>
<% } %>
который даже если stuff.query
определен, условие просто терпит неудачу и не выдает ошибки, как если бы он не был сам stuff
или любая другая переменная.