我正在使用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();创建一个HTML块,如下所示:
var signup_var signup_form_as_html = signup_form.toHTML();
<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时,只是我上面发布的字符串,而不是实际的HTML(因此是我想要的一种形式)。有什么方法可以使用EJS将字符串呈现为实际的HTML?还是我必须使用类似Jade的东西?
有了ejs,您可以拥有
<% code %>
…这是经过评估但未打印出来的代码。
<%= code %>
…这是经过评估并打印(转义)的代码。
<%- code %>
…这是经过评估并打印出来的代码(不可转义)。
由于您要打印变量而不是不对其进行转义,因此代码将是最后一个类型(带有-<%)。在您的情况下:
-<%
<%- my_form_content %>
有关更多信息,请参见完整的ejs文档。