首页 > 解决方案 > Express - 使用通过外部 JavaScript 文件中的渲染函数接收的对象

问题描述

我使用index.js文件中的 render 函数从 Express 传递一个对象:

app.get("/chat", function(req, res){
  res.render("chat", {user: req.user});
});

我可以在我的chat.ejs文件中使用它:

<% if(!user){ %>
  <li><a href="/auth/login">Connexion</a></li>
<% } else{ %>
  <li><a href="/profile">Profil</a></li>
  <li><a href="/chat">Chat</a></li>
  <li><a href="/auth/logout">Déconnexion</a></li>
<% } %>

<div id="output"></div>

一个chat.js JavaScript 文件链接到我的chat.ejs文件:

<script defer type="text/javascript" src="/script/chat.js"></script>

但是,当我想在 div 标签内输出数据时,我的外部 JavaScript 不知道用户对象:

typingFeedback.innerHTML = "<img src=" + user.thumbnail + "alt='Profile Image />";
let newP = document.createElement("p");
let newTxt = document.createTextNode(data.message);
newP.appendChild(newTxt);
output.appendChild(newP);

这是我的文件组织方式的图片: 我的文件

如何在我的外部 JavaScript 中使用用户对象?

标签: javascriptnode.jsexpress

解决方案


在您的chat.ejs中,您可以将用户公开为 JavaScript 对象:

 <script>
  var user = <%- JSON.stringify(user) %>;
</script>

然后您可以user从您的代码中访问它。


推荐阅读