您可以轻松地将其作为第二个参数中的对象传递给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
etc
<% 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
被定义后,条件就会失败,并且不会像 if 那样抛出错误stuff
本身或任何其他变量未定义。