Comment puis-je rendre JavaScript en ligne avec Jade?

J’essaie de faire en sorte que JavaScript soit rendu sur ma page en utilisant Jade (http://jade-lang.com/)

Mon projet est dans NodeJS avec Express, tout fonctionne correctement jusqu’à ce que je veuille écrire du code JavaScript en ligne dans la tête. Même en prenant les exemples des documents de Jade, je ne peux pas le faire fonctionner

Modèle de jade

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

Rendu HTML dans le navigateur

    "Test"  (10 == 10) {}      

Quelque chose est certainement un manque ici des idées?

utilisez simplement une balise ‘script’ avec un point après.

 script. var users = !{JSON.ssortingngify(users).replace(/<\//g, "<\\/")} 

https://github.com/pugjs/pug/blob/master/examples/dynamicscript.pug

Le filtre :javascript été supprimé dans la version 7.0

La documentation indique que vous devez utiliser une balise de script maintenant, suivie par un . char et pas d’espace précédent.

Exemple:

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

sera compilé pour

  

Utilisez la balise de script avec le type spécifié, incluez-la simplement avant le point:

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

Cela comstackra pour:

  

Je voulais commenter la réponse de liangzan, mais je n’ai pas assez de réputation. J’espère que cela t’aides

Aucune balise de script d’utilisation uniquement.

Solution avec | :

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

Ou avec un . :

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

TROISIÈME VERSION DE MA RÉPONSE:

Voici un exemple de plusieurs lignes de Javascript en ligne. Je ne pense pas que vous pouvez l’écrire sans utiliser un - . Ceci est un exemple de message flash que j’utilise dans un partiel. J’espère que cela t’aides!

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

Le code que vous essayez d’obtenir pour comstackr le code est-il dans votre question?

Si oui, vous n’avez pas besoin de deux choses: premièrement, vous n’avez pas besoin de déclarer que c’est un script Javascript /, vous pouvez juste commencer à coder après avoir tapé - ; Deuxièmement, après avoir -if vous n’avez pas besoin de taper { ou } non plus. C’est ce qui fait que Jade est jolie.

————– RÉPONSE ORIGINALE CI-DESSOUS —————

Essayez de préparer if avec - :

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

Il y a aussi des tonnes d’exemples de Jade à:

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

Pour le contenu multi-ligne, jade utilise normalement un “|”, cependant:

Les balises qui acceptent uniquement du texte tel que script, style et textarea n’ont pas besoin du premier | personnage

Cela dit, je ne peux pas reproduire le problème que vous rencontrez. Lorsque je colle ce code dans un modèle jade, il produit le bon résultat et me signale une alerte lors du chargement de la page.

Je vérifierais vos espaces blancs.

Aussi, vous pouvez apporter votre fichier JS en tant qu’inclusion. Je sais que ce n’est pas une réponse à ce qui ne va pas, mais vous trouverez plus facile de déboguer votre JS puisque toutes les erreurs finissent par faire référence à un numéro de ligne dans un fichier réel.

Utilisez le filtre :javascript . Cela va générer une balise de script et échapper au contenu du script en tant que CDATA:

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