将数据从模板传回给调用者

我希望有一个模板呈现一些数据,这些数据需要传递给render的调用者。 例如,我正在使用一个模板来生成电子邮件,为此我需要一个主题以及正文。 我想要做这样的事情:

 app.render( 'email', function(err,html) { subject = ?get from template somehow? postEmail( subject, html, user_addr ); }); 

也就是说,我希望模板能够决定主题中应该出现的内容(最好不要仅为主题行创build另一个模板)。

不知道你是否知道了这一点,但你可以通过改变参数的值来从Jade发回信息。

email.jade:

 - subject.text = "Hi " + user + ", welcome to the site."; | Subject: #{subject.text} 

app.js:

 args = { user: 'Test User', subject: { text: '' } }; app.render( 'email', args, function(err,html) { subject = args.subject.text; postEmail( subject, html, user_addr ); }); 

它必须是一个嵌套的对象(即subject.text而不是简单的subject ),否则你不会得到修改后的数据。 虽然,如果您直接调用使用jade.compile()创build的模板,那么嵌套似乎是不必要的。 我认为expression式必须在将参数发送到视图引擎之前制作参数的浅表副本。