如何将对象从 pug 传递到前端 javascript

How to pass an object from pug to front end javascript

我正在使用哈巴狗,我想将一个变量传递给前端以获取信息,但是当我尝试这样做时,它像文本一样传递。

我就是这样做的。

控制器代码:

res.render('view/edit', {
     title: 'Title',
     sub:true,
     data: variableObject
 });

这是渲染视图中的代码:

script(type='text/javascript').
    var x = "#{data}"
    console.log(x);

这是日志的结果

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

我无法访问对象,因为它是文本,有没有办法像传递对象一样传递对象?

首先使用 JSON.stringify:

将对象字符串化
res.render('view/edit', {
     title: 'Title',
     sub: true,
     data: JSON.stringify(variableObject)
 });

然后使用String Interpolation, Unescaped!{data}

script(type='text/javascript').
    var x = !{data}
    console.log(x);


或者只做一次,在你的模板中:

script(type='text/javascript').
    var x = !{JSON.stringify(data)}
    console.log(x);

(感谢@Matt,谢谢)

在这种情况下,我使用了这个:

var x = "#{ JSON.stringify(y) }"
   console.log( JSON.parse(x.replace(/"/g,'"')) );

我不确定这是否是最佳做法。