在EJS中将variables呈现为HTML

我正在使用Node.js( Forms )的Forms库,它将在后端为我呈现一个表单,如下所示:

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(); 

最后一行var signup_var signup_form_as_html = signup_form.toHTML(); 创build一个HTML块,如下所示:

 <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> 

基本上只是一长串的HTML。 然后我尝试使用以下代码使用EJS和Express进行渲染:

 res.render('signup.ejs', { session: loginStatus(req) , form: signup_form_as_html }); 

但是,在渲染HTML只是我上面张贴的string,而不是实际的HTML(因此我想要的forms)。 有没有办法使string渲染为实际的HTML使用EJS? 或者我将不得不使用像玉的东西?

与ejs你可以有

 <% code %> 

…这是评估,但不打印出来的代码。

 <%= code %> 

…这是评估和打印(逃逸)的代码。

 <%- code %> 

…这是评估和打印出来的代码(不逃脱)。

既然你想打印你的variables而不是转义它,你的代码将是最后一个types(带-<% )。 在你的情况下:

 <%- my_form_content %> 

有关更多信息,请参阅完整的ejs文档

2017年10月更新

新的ejs (v2,v2.5.7)开发在这里发生: https : //github.com/mde/ejs旧的ejs(v0.5.x,0.8.5,v1.0.0)可以在这里https:/ /github.com/tj/ejs

现在用ejs你可以做更多。 您可以使用:

  • 使用<%= %>转义输出(可configuration转义函数)
  • 未转换的原始输出与<%- %>
  • 换行模式('换行')和-%>结束标记
  • 使用<%_ _%>作为控制stream的空白调整模式(啜食所有空白)
  • <% %>控制stream程

所以,在你的情况下,它将是<%- variable %>其中variable是类似的

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

我希望这可以帮助别人。 🙂