在 express3.x 中,api 谈论 app.render('view', data, callback); 它应该和 res.render 做同样的事情,但是使用渲染数据的回调,而不是作为响应发送它。有没有办法在路由文件中使用 app.render。这是不可能的,因为在任何地方都没有 app 变量,但 app.js 可能还有其他简单的方法来渲染模板并将其存储为变量。我需要它来发送 html 电子邮件。我在我的应用程序中使用 hogan.js 模板。
谢谢
在 express3.x 中,api 谈论 app.render('view', data, callback); 它应该和 res.render 做同样的事情,但是使用渲染数据的回调,而不是作为响应发送它。有没有办法在路由文件中使用 app.render。这是不可能的,因为在任何地方都没有 app 变量,但 app.js 可能还有其他简单的方法来渲染模板并将其存储为变量。我需要它来发送 html 电子邮件。我在我的应用程序中使用 hogan.js 模板。
谢谢
您可以在需要时以应用程序通过的方式编写路由和模块
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);
这可能不是标准方式,尤其是路由文件的编写方式可能会很尴尬。但它使应用程序可用。到您的路线。
另一种方法是直接调用模板引擎。例如,如果您将Hogan.js与consolidate一起使用,您可以这样做:
var hogan = require('consolidate').hogan;
hogan(path_to_template or string, rendering_values, function(err, result) {
console.log(result);
});
我发现这比使用 app.render 更好,因为它更直接。