1

在 express3.x 中,api 谈论 app.render('view', data, callback); 它应该和 res.render 做同样的事情,但是使用渲染数据的回调,而不是作为响应发送它。有没有办法在路由文件中使用 app.render。这是不可能的,因为在任何地方都没有 app 变量,但 app.js 可能还有其他简单的方法来渲染模板并将其存储为变量。我需要它来发送 html 电子邮件。我在我的应用程序中使用 hogan.js 模板。

谢谢

4

2 回答 2

1

您可以在需要时以应用程序通过的方式编写路由和模块

module.exports = function (app) {
  return {
    'index': function(req, res, next) {
      // app is avail here 
    }
  }
}

并相应地要求它并在 app.js 中传递 app 变量

var app = module.exports = express.createServer();
var validate = require('./routes/validate')(app);

这可能不是标准方式,尤其是路由文件的编写方式可能会很尴尬。但它使应用程序可用。到您的路线。

于 2012-10-21T17:48:19.877 回答
0

另一种方法是直接调用模板引擎。例如,如果您将Hogan.jsconsolidate一起使用,您可以这样做:

var hogan = require('consolidate').hogan;

hogan(path_to_template or string, rendering_values, function(err, result) {
  console.log(result);
});

我发现这比使用 app.render 更好,因为它更直接。

于 2012-11-23T15:49:38.580 回答