Javascript 在ejs模板中获取url参数
我正在尝试基于URL参数创建一个ejs条件,例如,如果测试参数存在于localhost:3000/page?test,则显示一个div,否则不显示它 我的ejs模板类似于: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>
<% 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 %>