Express和ejs <%=呈现JSON


76

在我的index.ejs中,我有以下代码:

var current_user = <%= user %>

在我的节点中

app.get("/", function(req, res){
    res.locals.user = req.user
    res.render("index")
})

但是,在页面上我获得

var current_user = [object Object]

如果我写

var current_user = <%= JSON.stringify(user) %>

我得到:

var current_user = {&quot;__v&quot;:0,&quot;_id&quot;:&quot;50bc01938f164ee80b000001&quot;,&quot;agents&quot;:...

有没有一种方法可以传递JS可读的JSON ?

Answers:


190

哦,那很容易,不要使用<%=<%-而是使用。例如:

 <%- JSON.stringify(user) %>

第一个将以HTML呈现,第二个将呈现变量(按原样评估)


23
正确答案,但精确地说,是<%-JSON.stringify(user)%>呈现了魔力。
皮埃尔·毛伊2014年

是实际使用eval函数,还是在暗示结果与调用eval相似。我很好奇,因为众所周知,评估是...
NicholasFolk

1
好的,由于我的好奇心,我潜入其中,发现它实际上确实使用eval()。我还应该补充一点,我知道这是一个经常被模仿的说法,而评估并不一定是邪恶的,只是容易被滥用。不得不提的是,在我引起群众愤怒之前。
NicholasFolk

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.