J'utilise la bibliothèque de formulaires pour Node.js ( Forms ), qui rendra un formulaire pour moi sur le backend comme suit:
var signup_form = forms.create({
username: fields.string({required: true})
, password: fields.password({required: true})
, confirm: fields.password({
required: true
, validators: [validators.matchField('password')]
})
, email: fields.email()
});
var signup_form_as_html = signup_form.toHTML();
La dernière ligne var signup_var signup_form_as_html = signup_form.toHTML();
crée un bloc HTML qui se présente comme suit:
<div class="field required"><label for="id_username">Username</label><input type="text" name="username" id="id_username" /></div><div class="field required"><label for="id_password">Password</label><input type="password" name="password" id="id_password" /></div><div class="field required"><label for="id_confirm">Confirm</label><input type="password" name="confirm" id="id_confirm" /></div><div class="field"><label for="id_email">Email</label><input type="text" name="email" id="id_email" /></div>
Fondamentalement, juste une longue chaîne de HTML. J'essaie ensuite de le rendre en utilisant EJS et Express en utilisant le code suivant:
res.render('signup.ejs', {
session: loginStatus(req)
, form: signup_form_as_html
});
Mais sur le rendu du HTML, c'est simplement la chaîne que j'ai posté ci-dessus, plutôt que le HTML réel (et donc un formulaire comme je le souhaite). Existe-t-il un moyen de rendre cette chaîne au format HTML à l'aide d'EJS? Ou devrais-je utiliser quelque chose comme Jade?
Avec ejs tu peux avoir
<% code %>
... qui est un code évalué mais non imprimé.
<%= code %>
... qui est le code qui est évalué et imprimé (échappé).
<%- code %>
... qui est le code qui est évalué et imprimé (non échappé).
Puisque vous voulez imprimer votre variable et NE PAS l’échapper, votre code serait le dernier type (avec le -<%
). Dans ton cas:
<%- my_form_content %>
Pour plus d'informations, consultez la documentation full ejs
Le développement de new ejs (v2, v2.5.7) se passe ici: https://github.com/mde/ejs L'ancien ejs (v0.5.x, 0.8.5 , v1.0.0) est disponible ici https://github.com/tj/ejs
Maintenant, avec ejs, vous pouvez faire encore plus. Vous pouvez utiliser:
<%= %>
(fonction d'échappement configurable)<%- %>
-%>
<%_ _%>
<% %>
Donc, dans votre cas, il va s'agir de <%- variable %>
où variable
est quelque chose comme
var variable = "text here <br> and some more text here";
J'espère que ça aidera quelqu'un. ????
J'ai eu le même problème avec le rendu de l'entrée textarea depuis un éditeur wysiwyg enregistré au format HTML dans ma base de données. Le navigateur ne le rend pas, mais affiche le code HTML sous forme de texte. Après des heures de recherche, j'ai découvert
<%= data %>
données échappées pendant
<%- data %>
left data 'raw' (non échappé) et le navigateur peut maintenant le restituer.