将Node创建的HTML代码附加到HTML页面

时间:2017-09-05 21:03:41

标签: html node.js express

我的目标是将一个由JS产生的表附加到名为“henry”的ID页面中。另外,我是否应该在app.get('/', function(req,res)内构建表格?

app.get('/', function(req,res){
    fabMgrWorkflows.listResources(dbClient,dcGrp,'fabMgr',
    function (err,dbClient,result){
        if(err) console.error(err);
        //result = JSON.stringify(result);
        /*
        console.log(JSON.stringify(result,null,'\t'));
        */
        var addTable = "<table>";
        for(var attributename in result){
            addTable += "<tr>";
            addTable += "<td>" + attributename + "</td>";
            addTable += "<td>" + result[attributename] + "</td>";
            addTable += "</tr>";
        }
        addTable += "</table>";
        console.log(addTable);
        /*
        var node = document.createElement("LI");
        node.appendChild(addTable);
        document.getElementById("listtt").appendChild(node);
        console.log(addTable);
        */
        res.send(addTable);
    });
})

2 个答案:

答案 0 :(得分:0)

Express支持jade(pug),这是一种模板语言,允许您从数据创建html。您可以像这样渲染模板,其中第一个参数是模板的名称,第二个参数是要提供的数据:

res.render('your-template-name', {result})

express-generator默认将这些文件放在/ views中。

您视图的jade / pug文件可能如下所示:

html
    head
        include head

    body
          #henry
              table
                  each attributename in result
                      tr
                          td= attributename
                          td= result[attributename]

如果您需要帮助了解如何为express设置模板引擎,我建议运行快速生成器并检查输出。

答案 1 :(得分:0)

您不应该在服务器端JS代码中生成HTML,而是将数据传递给视图模板引擎。

一个很好的建议是EJS,因为它使用普通的HTML语法,能够在其间编写一些JS。 如果您将结果传递给EJS,您可以执行以下操作:

<table>
  <% for (var attributename in result) { %>
    <tr>
      <td><%= attributename %></td>
      <td><%= result[attributename] %></td>
    </tr>
  <% } %>
</table>

要获得全面的教程,您可以查看here