javascript – 在ejs模板中获取url参数

我正在尝试基于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参数?例如,<%= title%>工作正常,有没有像<%= req.query%>?

我也用快递.

解决方法

您可以在第二个参数中轻松地将其作为对象传递给render()
app.get('/someurl',function(req,res,next) {
   res.render('filename',{query : req.query});
});

您也可以使用本地变量

app.get('/someurl',next) {
   res.locals.query = req.query;
   res.render('filename');
});

当与在所有其他路由之前运行的一般路由一起使用时,这是非常有用的,使得变量可用于以下所有路由

app.use(function(req,next) {
   res.locals.query = req.query;
   res.locals.url   = req.originalUrl;

   next();
});

它可以在您作为查询等渲染的文件中使用

<% if (query == "something") { %>
    <div id="crazy_shit">
        <a href="<%- url -%>">Here</a>
    </div>
<% } %>

作为旁注,如果没有定义查询某些原因,那么在EJS中会出现一个使用未定义变量的错误,这可能会令人讨厌.

我通常通过使用对象来解决这个问题,因为检查对象属性不会触发错误,并且很容易确保该对象始终在每个EJS模板顶部具有初始值.
在路线上这样做

app.user(function(req,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,条件也就失败了,它不会抛出一个错误,就像它自己或任何其他变量没有被定义一样.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)