Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ejs模板中获取url参数_Javascript_Node.js_Express_Ejs - Fatal编程技术网

Javascript 在ejs模板中获取url参数

Javascript 在ejs模板中获取url参数,javascript,node.js,express,ejs,Javascript,Node.js,Express,Ejs,我正在尝试基于URL参数创建一个ejs条件,例如,如果测试参数存在于localhost:3000/page?test,则显示一个div,否则不显示它 我的ejs模板类似于: <% include header %> <div class="row"> <%if (title !== "homepage") {%> <%= title %> <div> <% include nav %> </div>

我正在尝试基于URL参数创建一个ejs条件,例如,如果测试参数存在于localhost:3000/page?test,则显示一个div,否则不显示它

我的ejs模板类似于:

<% include header %>
<div class="row">
<%if (title !== "homepage") {%>
<%= title %>
  <div>
    <% include nav %>
  </div>
<%}%>
  <div>
  </div>
</div>
<% include footer %>

有没有办法直接从ejs文件访问URL参数?比如说,作品很好,有什么类似的吗


我也在使用express。

您可以在第二个参数中将其作为对象轻松传递到
render()

您还可以使用
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>
<% } %>
然后在模板中

<% 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
本身或任何其他变量那样引发错误。


<%= req.query.paramName %>

对我来说很有用,其中
paramName
是URL查询参数的名称。

只需以查询的形式发送内容,即可轻松检索

app.get('/category', function(req, res) {
  var string = stuff
  res.redirect('/?valid=' + string);
}); 
在ejs模板中,可以直接使用参数名

<% var k = valid %>

此外,您可以在路由中间件之前使用自定义中间件,如下所示:
app.use(function(req,res,next){res.locals.some_var='var';next();})。这样,var将在所有视图中都可用。用于传递
req
数据,如用于导航的url路径。
app.get('/category', function(req, res) {
  var string = stuff
  res.redirect('/?valid=' + string);
}); 
<% var k = valid %>