template programacion preprocesador plantillas node jade for engines node.js pug

node.js - programacion - Plantilla de Jade, ¿cómo pasar un objeto concreto a las páginas?



pug preprocesador html (4)

Del lado de JS, enviaste de vuelta

res.render(__dirname + ''/pages/viz.jade'', { vizJson: JSON.stringify(newJson), });

En el lado de HTML, he encontrado algo así como:

JSON.parse( ''!{vizJson}'' )

trabajos.

Tengo una plantilla de jade para mi proyecto node.js. Me gustaría enviar un objeto a la plantilla de jade y pasarlo a una función dentro de la página (para representar algo).

Estoy seguro de que envío las cosas correctas desde el servidor de esta manera

res.render(__dirname + ''/pages/viz.jade'', { vizJson: newJson, });

en el cliente, hago algo como esto:

script sunburst(#{vizJson})

Por lo tanto, dentro de una función de script, quiero llamar a una función que crea mi visualización con un json creado en el lado del servidor.

El problema es que cuando se procesa tengo algo como sunburst([Object object]) . También traté de enviar la versión en cadena del JSON pero cuando lo hago JSON.parse(#{vizJson}) se queja como Unexpected token & .

El json que envío siempre es diferente y tiene diferentes niveles de profundidad.

¿Alguien sabe qué hacer?

Gracias


Espero que esto ayude a alguien. Lo solucioné así:

script sunburst(!{JSON.stringify(vizJson)})

¡Fíjate ! y el {...} envolviendo el método de stringify.


Para que esto funcione, debe stringify en el servidor.

res.render(__dirname + ''/pages/viz.jade'', { vizJson: JSON.stringify(newJson), });

Luego, como mencionaste, analiza el JSON en el cliente.

script sunburst(JSON.parse(#{vizJson}))

¡Espero que ayude!


Por extraño que parezca, para mí la solución no involucraba llamadas a JSON.parse . Codifiqué mi objeto en el servidor y simplemente utilicé el método !{vizJson} y obtuve mi objeto en el lado del cliente.

Según los documentos, interpolación de cadenas no guardadas: http://jade-lang.com/reference/interpolation/