44 votes

Imprimer des chaînes html brutes sur EJS

J'utilise express.js avec des modèles EJS et j'essaie de faire quelque chose comme ceci :

<%= "<a href='#'>Test</a>" %>

mais il imprime ceci :

&lt;a href='#'&gt;Test&lt;/a&gt;

comment puis-je imprimer des chaînes de caractères "sûres pour le html" ?

72voto

alessioalex Points 27001

Vous devez utiliser le code html partout, et utiliser les balises EJS uniquement lorsque vous avez besoin de données dynamiques. Exemple :

<a href='<%= user.id %>'><%= user.name %</a>

Pour répondre spécifiquement à votre question, vous pouvez utiliser <%- "<tags_here>" %> à la sortie non encodé Données HTML.

34voto

Ivan Zhirkov Points 459

Pour une sortie html brute dans ejs vous pouvez utiliser ce code

<%- "<a href='#'>Test</a>" %>

15voto

Miguel Carvajal Points 668

Voici les options disponibles selon les docs

  1. tag <% 'Scriptlet', pour le flux de contrôle, pas de sortie
  2. <%_ 'Whitespace Slurping' Balise scriptlet, enlève tous les espaces blancs avant elle.
  3. <%= Sort la valeur dans le modèle (HTML échappé)
  4. <%- Sort la valeur non encodée dans le modèle
  5. <%# Balise de commentaire, pas d'exécution, pas de sortie
  6. <%% Produit un littéral '<%'.
  7. %> Balise de fin de ligne simple
  8. -%> Trim-mode ('newline slurp') tag, coupe la nouvelle ligne suivante
  9. _%> Balise de fin 'Whitespace Slurping', supprime tous les espaces après elle.

On dirait que l'option dont vous avez besoin est le numéro 4.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X