Вы можете передать его легко, как объект во втором аргументе 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 для использования неопределенной переменной , что может раздражать.
Обычно я решаю это с помощью объекта, поскольку проверка свойств объекта не вызывает ошибок, и легко убедиться, что объект всегда имеет начальное значение в верхней части каждого шаблона 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
или любая другая переменная.
Кроме того, перед промежуточным программным обеспечением маршрутизации может быть настроено промежуточное программное обеспечение: 'app.use (function (req, res, next) {res.locals.some_var = 'var'; next();}); '. Таким образом, var будет доступен во всех представлениях. Полезно передавать данные 'req', такие как URL-адрес для навигации. – diosney