template style programacion preprocesador node jade index examples node.js express pug

node.js - style - pug preprocesador html



¿Cómo puedo renderizar JavaScript en línea con Jade? (8)

El filtro :javascript fue eliminado en la versión 7.0

La documentación dice que debes usar una etiqueta de script ahora, seguida de a . Char y sin espacio precedente.

Ejemplo:

script. if (usingJade) console.log(''you are awesome'') else console.log(''use jade'')

será compilado para

<script> if (usingJade) console.log(''you are awesome'') else console.log(''use jade'') </script>

Estoy intentando obtener JavaScript para representarlo en mi página utilizando Jade (http://jade-lang.com/)

Mi proyecto está en NodeJS con Express, todo funciona correctamente hasta que quiero escribir algo de JavaScript en línea en la cabeza. Incluso tomando los ejemplos de los documentos de Jade, no consigo que funcione. ¿Qué me estoy perdiendo?

Plantilla de jade

!!! 5 html(lang="en") head title "Test" script(type=''text/javascript'') if (10 == 10) { alert("working") } body

Resultado del renderizado HTML en el navegador.

<!DOCTYPE html> <html lang="en"> <head> <title>"Test"</title> <script type="text/javascript"> <if>(10 == 10) {<alert working></alert></if>} </script> </head> <body> </body> </html>

Algo definitivamente una falta aquí alguna idea?


No usar etiqueta de script solamente.

Solución con | :

script | if (10 == 10) { | alert("working") | }

O con una . :

script. if (10 == 10) { alert("working") }


Para el contenido de varias líneas, jade normalmente usa una "|", sin embargo:

Las etiquetas que solo aceptan texto como script, estilo y área de texto no necesitan el encabezado | personaje

Dicho esto, no puedo reproducir el problema que está teniendo. Cuando pego ese código en una plantilla de jade, produce el resultado correcto y me avisa con una alerta en la carga de la página.


Revisaría tus espacios en blanco.

También puede traer su archivo JS como un incluir. Sé que no es una respuesta a lo que está mal, pero le resultará más fácil depurar su JS, ya que cualquier error termina por referirse a un número de línea en un archivo que es real.


TERCERA VERSIÓN DE MI RESPUESTA:

Aquí hay un ejemplo de varias líneas de jade Javascript en línea. No creo que puedas escribirlo sin usar un - . Este es un ejemplo de mensaje flash que utilizo en forma parcial. ¡Espero que esto ayude!

-if(typeof(info) !== ''undefined'') -if (info) - if(info.length){ ul -info.forEach(function(info){ li= info -}) -}

¿El código que está intentando obtener para compilar el código en su pregunta?

Si es así, no necesita dos cosas: primero, no necesita declarar que es Javascript / a script, puede comenzar a codificar después de escribir - ; segundo, después de escribir -if no es necesario que escriba { o } tampoco. Eso es lo que hace que Jade sea muy dulce.

-------------- RESPUESTA ORIGINAL A CONTINUACIÓN ---------------

Intenta anteponer if con - :

-if(10 == 10) //do whatever you want here as long as it''s indented two spaces from the `-` above

También hay toneladas de ejemplos de Jade en:

https://github.com/visionmedia/jade/blob/master/examples/


Use la etiqueta de script con el tipo especificado, simplemente inclúyalo antes del punto:

script(type="text/javascript"). if (10 == 10) { alert("working"); }

Esto compilará para:

<script type="text/javascript"> if (10 == 10) { alert("working"); } </script>

Quería comentar la respuesta de liangzan, pero no tiene suficiente reputación. Espero que esto ayude


Utilice el :javascript filtro de :javascript . Esto generará una etiqueta de script y escapará del contenido del script como CDATA:

!!! 5 html(lang="en") head title "Test" :javascript if (10 == 10) { alert("working") } body