javascript - 如何在我的 ejs 脚本标签中使用在 server.js 中创建的变量?
问题描述
我正在构建我的第一个 NodeJS 项目,它有很多文件管理。我认为为了让我的生活更轻松,在我的一个 ejs 文件中存在的脚本标记中获取在我的 server.js 中创建的传递变量将是有益的。这是我要使用的代码示例:
// My server.js file - I want to use the variable "files" inside my ejs script tag
app.get('/feed', (req, res) => {
let files = fs.readdirSync("./uploads");
res.status(200).render('feed', {files});
});
// My ejs file - this is what I found on Google and tried, yet it did not work
<% let f = files %>
</body>
<script>
let getFiles = <%= f %>;
有没有办法实现我想要的?任何帮助都会有所帮助!!
解决方案
因此,为了使用在前端创建的服务器端变量,您需要将其作为道具传递。
为了在 express 中将 props 传递给视图,我们在 res.render 方法中传入一个对象作为第二个参数:
我们不能只传入一个变量或其他东西作为道具。我们需要先重新分配它们。
res.render(view, {
prop1: value,
prop2: newValue,
});
在这里,我们将 value 和 newValue 分别重新分配给 prop1 和 prop2。
所以,你的问题的解决方案,
res.status(200).render('feed', {f: files})
在这里,我们简单地获取 files 变量并将其作为 prop 传递,将其重新分配给名称 f。我们可以通过以下方式在我们的视图中使用它:
<% files %>
推荐阅读
- swift - SwiftUI 防止用户在输入数据时点击按钮
- sql - 如何在不删除和重新创建 BigQuery 表的情况下将记录附加到视图?
- django - django:如何正确加载带有 hash/md5 附加的静态文件?
- c# - 如何选择 C# 列表中的值?
- javascript - 如何使用动画覆盖来掩盖元素?
- r - 同时保存和打印 R 系统调用输出?
- android - 无法从 TextView 中删除 clickListener 并将其设置为可跨文本
- android - 用于 android 数据库的 MVVM 与 SQLiteOpenHelper。有点迷茫
- vba - 为什么在尝试读取记录集字段时未定义访问 vba 抛出子或函数?
- java - ByteBuffer 未填充正确的数据