如何以编程方式生成带有jade的html页面?

时间:2014-05-11 01:51:31

标签: javascript node.js pug

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', {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

如何使颜色数组可用于jade编译器?

相关参考:http://jade-lang.com/api/

2 个答案:

答案 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>

答案 1 :(得分:0)

在这种情况下,jade会重载第二个参数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);
});

(这是未经测试的,但应该有效)