在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";
我希望这可以帮助别人。 🙂