You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EJS视图中获取Express传递的所有变量列表?

在EJS视图中访问所有传递的变量上下文

当然可以实现!在Express+EJS的组合里,所有通过res.render()传递给视图的变量,其实都会被自动挂载到视图的locals对象上——这就是你要找的包含所有变量的全局上下文。

举个例子,对应你给出的控制器代码:

homeAction(req, res) { 
  res.render('index', {
    form: this.renderForm('aForm'), 
    title: "My Super Title" 
  }); 
}

在你的index.ejs视图里,你可以直接通过locals访问所有传递的变量:

1. 遍历所有变量(包括EJS内部变量)

<h3>所有传递的变量:</h3>
<ul>
  <% Object.keys(locals).forEach(key => { %>
    <li>
      <strong><%= key %></strong>: <%= locals[key] %>
    </li>
  <% }) %>
</ul>

2. 过滤掉EJS内部变量(只看你自己传递的)

EJS会自动添加一些下划线开头的内部变量(比如_locals、settings),如果只想看你自己定义的form和title,可以过滤掉这些内部字段:

<h3>自定义传递的变量:</h3>
<ul>
  <% Object.keys(locals)
    .filter(key => !key.startsWith('_'))
    .forEach(key => { %>
      <li>
        <strong><%= key %></strong>: <%= locals[key] %>
      </li>
  <% }) %>
</ul>

额外说明

平时你直接用<%= form %>或者<%= title %>就能访问单个变量,本质上是EJS帮你省略了locals.前缀——也就是说,<%= title %>和<%= locals.title %>是完全等价的。

内容的提问来源于stack exchange,提问作者BENARD Patrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:33:33