2017-09-05 89 views
0

我的目標是將由JS產生的表追加到名爲「henry」的ID中的頁面。另外,我是否應該在app.get('/', function(req,res)內部建立表格?將由節點創建的HTML代碼追加到HTML頁面

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

回答

0

快遞附帶了jade(pug)的支持,這是允許你創建從數據HTML模板化的語言。可以渲染像這樣,其中第一個參數是模板的名稱的模板,第二個是數據源:

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

express-generator默認放入/視圖這些文件。

您的視圖中的玉/哈巴狗文件可能是這個樣子:

html 
    head 
     include head 

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

如果您需要了解如何建立快遞模板引擎,我建議運行快遞發電機和檢查幫助輸出。

0

您不應該在服務器端JS代碼中生成HTML,而是將您的數據傳遞給視圖模板引擎。

一個很好的建議是EJS,因爲它使用正常的HTML語法,能夠在它們之間寫入一些JS。 如果傳遞結果到EJS,你可以這樣做:

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

對於一個全面的教程,你可以看看here

+0

對於EJS,我們是否需要以某種方式組織文件才能正常工作?因爲我在看教程,第一步是文件結構。我想知道這是否需要? –

+0

您應該將所有視圖放在頂層視圖目錄中。除此之外,本教程中指定的文件結構不是強制性的,但推薦使用。您可以看到res.render()調用中如何指定要呈現的文件作爲參數,因此如果需要,您可以始終使用不同的路徑。 –