jade.compile返回一个函数

时间:2012-11-22 05:19:40

标签: node.js pug

我想重做我的博客,但每当我调试它时,我的代码似乎都会返回[function]。是的,它是正确的路径,它曾经在我更新玉之前工作,但现在不再。

post.stub = jade.compile(
        fs.readFileSync(__dirname + '/blog/' + p + '/stub.jade')
)

如何解决此问题,以便console.log(post.stub)将返回jade文件中的my:markdown而不是[function]

提前致谢。

更新回答:

 post.stub = jade.compile(
            fs.readFileSync(__dirname + '/blog/' + p + '/stub.jade')
        )({})

1 个答案:

答案 0 :(得分:1)

这就是jade和所有类似模板系统的工作方式。有两个步骤:

  1. 将玉文本模板转换为函数(每个模板只需要发生一次)
  2. 获取一组上下文数据,通过编译的模板函数运行它,并将呈现的字符串作为HTML返回(每次有独特的上下文数据时都会发生)
  3. 因此,如果您的模板不需要任何上下文数据,只需使用空对象调用它(可能为null / undefined也可以正常工作):

    post.stub = jade.compile(
            fs.readFileSync(__dirname + '/blog/' + p + '/stub.jade')
    )({})
    

    另见the jade javascript API docs