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

Node.js中EJS文件局部变量传递问题及测试项目需求

实现EJS局部变量传递的方案

要让result.ejs依次显示locvar.ejs、change.ejs的局部变量及自身变量,核心是利用EJS的include语法传参,配合Express在渲染时传递全局/局部变量,具体步骤如下:

1. 配置Server端(server.js)

先确保Express项目正确配置EJS模板引擎,渲染result.ejs时传递所有需要的基础变量(包括自身、locvar、change所需的变量):

const express = require('express');
const app = express();

// 设置EJS为模板引擎
app.set('view engine', 'ejs');
app.set('views', './views'); // 假设ejs文件都放在views目录下

// 路由:渲染result.ejs
app.get('/result', (req, res) => {
  // 定义所有需要的变量
  const pageData = {
    // result.ejs自身的局部变量
    resultLocalVal: '这是result.ejs专属的局部变量',
    // 要传给locvar.ejs的变量集合
    locvarParams: {
      username: 'locvar测试用户',
      userAge: 28
    },
    // 要传给change.ejs的变量集合
    changeParams: {
      itemName: 'change测试项',
      itemStatus: '已更新'
    }
  };
  res.render('result', pageData);
});

app.listen(3000, () => console.log('Server running on port 3000'));

2. 在result.ejs中引入模板并传递变量

在result.ejs里通过include语法引入另外两个模板,同时传递对应变量,直接使用自身变量:

<!DOCTYPE html>
<html>
<head>
  <title>Result Page</title>
</head>
<body>
  <h3>locvar.ejs的局部变量:</h3>
  <!-- 引入locvar.ejs并传递locvarParams变量 -->
  <%- include('locvar', locvarParams) %>

  <h3>change.ejs的局部变量:</h3>
  <!-- 引入change.ejs并传递changeParams变量 -->
  <%- include('change', changeParams) %>

  <h3>result.ejs自身的局部变量:</h3>
  <p><%= resultLocalVal %></p>
</body>
</html>

3. 编写locvar.ejs和change.ejs接收变量

在locvar.ejs中直接使用传递过来的变量:

<p>用户名:<%= username %></p>
<p>年龄:<%= userAge %></p>

在change.ejs中使用传递的变量:

<p>项目名称:<%= itemName %></p>
<p>项目状态:<%= itemStatus %></p>

额外说明

  • 如果locvar.ejs或change.ejs有内部自定义的局部变量,直接在各自模板里定义即可,比如在locvar.ejs中添加:
    <% let internalMsg = '这是locvar内部定义的变量'; %>
    <p>内部变量:<%= internalMsg %></p>
    
    引入后会自动渲染该内部变量的值。
  • 注意使用<%- include(...) %>而非<% include(...) %>,前者会解析HTML内容,后者会原样输出代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:30:13