Render a variable as HTML in EJS

前端 未结 3 1989
花落未央
花落未央 2020-11-28 02:17

I am using the Forms library for Node.js (Forms), which will render a form for me on the backend as so:

var signup_form = forms.create({
    username: fields         


        
相关标签:
3条回答
  • 2020-11-28 02:38

    October 2017 update

    The new ejs (v2, v2.5.7) development is happening here: https://github.com/mde/ejs The old ejs (v0.5.x, 0.8.5, v1.0.0) is available here https://github.com/tj/ejs

    Now with ejs you can do even more. You can use:

    • Escaped output with <%= %> (escape function configurable)
    • Unescaped raw output with <%- %>
    • Newline-trim mode ('newline slurping') with -%> ending tag
    • Whitespace-trim mode (slurp all whitespace) for control flow with <%_ _%>
    • Control flow with <% %>

    So, in your case it is going to be <%- variable %> where variable is something like

    var variable = "text here <br> and some more text here";
    

    I hope this helps someone.

    0 讨论(0)
  • 2020-11-28 02:49

    With EJS you can have several tags:

        <% code %>
    

    ... which is code that is evaluated but not printed out.

        <%= code %>
    

    ... which is code that is evaluated and printed out (escaped).

        <%- code %>
    

    ... which is code that is evaluated and printed out (not escaped).

    Since you want to print your variable and NOT escape it, your code would be the last type (with the <%-). In your case:

        <%- my_form_content %>
    

    For more tags, see the full EJS documentation

    0 讨论(0)
  • 2020-11-28 02:49

    I had the same issue with rendering the textarea input from from a wysiwyg editor saved as html in my database. The browser will not render it but displayed the html as text. After hours of searching, I found out

    <%= data %> escaped data while

    <%- data %>left data 'raw'(unescaped) and the browser could now render it.

    0 讨论(0)
提交回复
热议问题