2014-05-11 72 views
0

colors.jade的內容:如何以編程方式生成與玉的HTML頁面?

html 
    body 
    for color in colors 
     p color 

genHtml.js的內容:

var jade = require('jade'); 
var colors = ['red', 'blue', 'green']; 

var html = jade.renderFile('colors.jade', {globals: [colors] }); 
console.log(html); 

當您運行node genHtml.js,您收到此錯誤:

TypeError: colors.jade:3 
    1| html 
    2| body 
    > 3|  for color in colors 
    4|  p color 
    5| 

Cannot read property 'length' of undefined 

你將如何使顏色數組可用於玉石編譯器?

相關參考:http://jade-lang.com/api/

+0

你傳遞的顏色數組的數組所以刪除多餘的支架和全局的關鍵,應改名爲顏色。 –

回答

0

你傳遞colors陣列到陣列,使得刪除多餘的括號,並globals重點應改名爲colors。在color之前也有=輸出值。

測試和工作:

colors.jade

html 
     body 
     for color in colors 
      p=color 

genHtml.js

var jade = require('jade'); 
var colors = ['red', 'blue', 'green']; 

var html = jade.renderFile('colors.jade', { colors: colors }); 
console.log(html); 

標準輸出

<html><body><p>red</p><p>blue</p><p>green</p></body></html> 
0

在這種情況下,玉重載第二個參數options包括locals。此外,renderFile不返回HTML,HTML在回調中返回。您應該使用:

var jade = require('jade'); 
var colors = ['red', 'blue', 'green']; 

jade.renderFile('colors.jade', { colors: colors }, function(err, html) { 
    // if err... 
    console.log(html); 
}); 

(這是未經測試,但應工作)

+0

好吧,看起來它可能會選擇性地返回html值,但我強烈建議不要這樣做,因爲這會使它成爲同步功能,因爲從文件系統加載文件。 – jeremy