node.js - 有没有办法在 EJS 中包含/渲染变量?
问题描述
有没有办法让包含的内容来自变量而不是来自文件?
我需要从数据库而不是文件中获取包含的内容,我想做这样的事情:
example.ejs 的内容:
<h1>Example EJS template<h1>
<p><%- include(data.includeCode) %><p>
Nodejs / Express 与 EJS 代码:
let includeCode = `<% if (data.dSwitch === 1) { %> 1 detected <% } else { %> Something else <% } %>`
let ejsdata = {...{includeCode: includeCode}, ...{dSwitch: 1}};
res.render("example.ejs",{data:ejsdata});
我想看到的是以下输出:
<h1>Example EJS template</h1>
<p> 1 detected </p>
我尝试使用 <%- data.includeCode %> 但输出为
<h1>Example EJS template</h1>
<p> <% if (data.dSwitch === 1) { %> 1 detected <% } else { %> Something else <% } %> </p>
解决方案
解决方案是从 ejs 模板调用 ejs.render :
example.ejs 的内容:
<h1>Example EJS template<h1>
<p><%- ejs.render(data.includeCode,{data:data}) %><p>
NodeJS / Express 与 EJS 代码:
import ejs from "ejs";
globalThis.ejs = ejs; // make sure ejs is available in the global context
let includeCode = `<% if (data.dSwitch === 1) { %> 1 detected <% } else { %> Something else <% } %>`
let ejsdata = {...{includeCode: includeCode}, ...{dSwitch: 1}};
res.render("example.ejs",{data:ejsdata});
结果输出:
<h1>Example EJS template</h1>
<p> 1 detected </p>
推荐阅读
- reactjs - socket.io (on message) 每条消息触发多次
- react-native - 无法单击 TouchableWithoutFeedback 内的下拉选择器
- linear-regression - 如何在没有训练的情况下在 Weka 中创建线性回归模型?
- build - 从命令行获取 Klockwork 计数
- python - 删除彼此相邻的重复值 - 字典中的 Python 列表
- dolphindb - 如何获取 DolphinDB 中的非 NULL 数据?
- qt - QML SwipeView 或 Tumbler 在内容更改时重新加载
- python - 谷歌地球引擎python API
- postgresql - 我正在关注 PostgreSQL 教程。无法从 psql --help 在 psql shell 中获取结果
- swift - 邮件附件中的空 Core Data Sqlite 数据库