node.js - 在 EJS 中将变量呈现为 HTML

标签 node.js express ejs

我正在使用 Node.js 的表单库 (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 block :

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

更多标签,见full EJS documentation

关于node.js - 在 EJS 中将变量呈现为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10326950/

相关文章:

node.js - 在 Mean.js 中使用 Node 的域

node.js - 如何处理multer自定义存储中的错误?

javascript - 如何自定义express.js url查询参数解析

javascript - 在 sails.js 中使用 EJS 模板

node.js - 如何创建对话流对话来进行价格估算

javascript - NodeJS - typescript - 智能感知

node.js - 获取 Gists 的 Cors 选项

node.js - 循环遍历具有子数组的嵌入文档并将其显示在 EJS 文档上

node.js - EJS 包含相对于项目根目录的文件

node.js - Feathersjs Node 套接字客户端未连接