Sto usando la libreria Forms per Node.js ( Forms ), che renderà un modulo per me sul backend in questo modo:
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 linea finale var signup_var signup_form_as_html = signup_form.toHTML();
crea un blocco di HTML che appare come tale:
Fondamentalmente solo una lunga stringa di HTML. Quindi provo a renderlo usando EJS e Express usando il seguente codice:
res.render('signup.ejs', { session: loginStatus(req) , form: signup_form_as_html });
Ma sul rendering dell’HTML è semplicemente la stringa che ho postato sopra, piuttosto che un vero e proprio HTML (e quindi una forma che voglio). C’è un modo per rendere quella stringa di rendering come HTML effettivo usando EJS? O dovrò usare qualcosa come Jade?
Con gli ejs puoi avere
<% code %>
… che è un codice che viene valutato ma non stampato.
<%= code %>
… che è un codice che viene valutato e stampato (sfuggito).
<%- code %>
… che è un codice che viene valutato e stampato (non sfuggito).
Dal momento che si desidera stampare la variabile e NON uscirne, il codice sarà l’ultimo tipo (con il -<%
). Nel tuo caso:
<%- my_form_content %>
Per ulteriori informazioni, consultare la documentazione completa di ejs
Il nuovo sviluppo di ejs (v2, v2.5.7) sta accadendo qui: https://github.com/mde/ejs I vecchi ejs (v0.5.x, 0.8.5, v1.0.0) sono disponibili qui https: / /github.com/tj/ejs
Ora con gli ejs puoi fare ancora di più. Puoi usare:
<%= %>
(funzione di escape configurabile) <%- %>
-%>
tag finale <%_ _%>
<% %>
Quindi, nel tuo caso sarà <%- variable %>
dove la variable
è qualcosa di simile
var variable = "text here
and some more text here";
Spero che questo aiuti qualcuno. 🙂
Ho avuto lo stesso problema con il rendering dell’input textarea da un editor wysiwyg salvato come html nel mio database. Il browser non lo renderà ma mostrerà l’html come testo. Dopo ore di ricerche, ho scoperto
<%= data %>
dati sfuggiti mentre
<%- data %>
lasciato i dati “raw” (senza caratteri di escape) e il browser potrebbe ora renderizzarli.