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
相关产品推荐
相关产品推荐

