将数据从后端发送到前端公共Javascript文件
我想将数据从后端发送到前端公共javascript文件。我知道使用ejs,但我有一个专用的javascript文件,我想向该文件发送数据 以下是我的后端节点代码:将数据从后端发送到前端公共Javascript文件,javascript,node.js,frontend,backend,Javascript,Node.js,Frontend,Backend,我想将数据从后端发送到前端公共javascript文件。我知道使用ejs,但我有一个专用的javascript文件,我想向该文件发送数据 以下是我的后端节点代码: router.get('/', isAuth, function (req, res) { User.find({ id: req.user[0].id }).populate("tweets").populate("tags").exec(function (err, user) {
router.get('/', isAuth, function (req, res) {
User.find({ id: req.user[0].id }).populate("tweets").populate("tags").exec(function (err, user) {
res.render("dashboard", {user: user});
// res.send(user);
});
});
下面是我如何在body标记末尾之前从dashboard.ejs调用脚本文件:
<script src="/dashboard/scripts/script.js"></script>
我已经尝试了很多,但没有找到解决方案。您可以尝试将对象转换为字符串,然后将其传递给脚本标记。 然后可以解析该字符串,将其转换为and对象,然后将其存储为全局变量。 其他脚本标记应该能够访问全局变量 将节点js文件更改为:
res.render("dashboard", {user: JSON.stringify(user)});
在.ejs文件中,在
之前添加脚本标记:
const str=“”;
const obj=str.replace(/&34;/gi,“\”);
现在,您可以在其他脚本标记中使用obj
<script>alert(obj);</script>
警报(obj);
因此,我解决了问题的核心,但也从这里的答案中获得了帮助。这就是我所做的。我首先使用JSON.stringfy()
将对象转换为字符串,然后将其发送到前端脚本,然后使用JSON.parse()
再次转换它。但是,由于嵌入代码中的“/”(斜杠),我得到了JSON代码“T”
错误,因此我不得不将嵌入代码更改为前端脚本中处理的其他代码。它可以工作,但现在它将其视为字符串。还有,你能告诉我这是干什么用的吗str.replace(/";/gi,'\'')
Ejs,stringify将所有引号转换为/",因此您必须将它们转换回。使用JSON.parse(obj)将字符串转换为对象
<script>
const str = "<%= name %>";
const obj = str.replace(/"/gi, '\'');
</script>
<script>alert(obj);</script>