Node.js - 在 HTML/文档中查找传入参数的位置



我的 Node 中有以下函数.js该代码呈现一个 HTML 页面并向其传递一个名为 htmlParamObj 的 JavaScript 对象

exports.getPage = function (req, res, next) {
    var htmlParamObj= {
        propertyOne: 'yada',
        propertyTwo: 'yada yada'
       };
    res.render('myPage.html',htmlParamObj);
};

我可以使用 EJS 访问传入参数 ( htmlParamObj ),如下所示:<% propertyOne %> ,但我不知道如何通过文档本身访问htmlParamObj。我相信htmlParamOb'将附加到html的文档 - 但是我可以在文档中的哪个字段中找到它?是在头部,身体,还是孩子?哪里?

传递的对象仅在呈现 HTML 时使用,不会以任何方式传递给浏览器。

如果您需要页面中的数据,则需要将其放在那里。

当我需要将复杂数据传递到客户端脚本时,我使用的解决方案是在我的 HTML EJS 文件的顶部附近放置一个脚本标记,并用我的数据填充它。例如,我可以将以下内容添加到我的模板中:

<script>
    window.MY_DATA = <%= JSON.stringify(myData) %>
</script>

请注意,由于 JSON 是 javascript 的子集,因此我可以使用 JSON.stringify 将数据序列化为适合放置在脚本标签内的形式,并将其分配给我想要的任何变量。

这里的限制是您无法发送任何无法使用 JSON.stringify 序列化的数据。不是一个沉重的负担,但如果你想发送一个函数或其他对象,可能会绊倒你。

我找到的解决方案是在我的 HTML 中定义一个全局属性,如下所示:

<a name="team" value="<%=team._id%>"></a>

然后我可以在任何脚本中访问它,如下所示:

<script>
var team = document.getElementsByName('team');
</script>

这将返回正确的对象。但是,我不认为这是最好的答案,特别是考虑到任何全局定义的变量通常都是一个坏主意。我希望这个问题能得到另一个答案。

最新更新