app.render
:
Render a view with a callback responding with the rendered string. This is the app-level variant of
res.render()
,and otherwise behaves the same way.
Google文档res.render
:
Render a view with a callback responding with the rendered string. When an error occurs
next(err)
is invoked internally. When a callback is provided both the possible error and rendered string are passed,and no automated response is performed.
有人可以帮助我弄清楚什么时候使用哪一个?
解决方法
>您可以在根级别调用app.render,并且只能在路由/中间件中调用res.render。
> app.render总是返回回调函数中的html,而res.render仅在您将回调函数指定为第三个参数时才这样做。如果你调用res.render没有第三个参数/回调函数,渲染的html被发送到客户端,状态码为200。
看看下面的例子。
> app.render
app.render('index',{title: 'res vs app render'},function(err,html) { console.log(html) }); // logs the following string (from default index.jade) <!DOCTYPE html><html><head><title>res vs app render</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>res vs app render</h1><p>Welcome to res vs app render</p></body></html>
> res.render没有第三个参数
app.get('/render',function(req,res) { res.render('index',{title: 'res vs app render'}) }) // also renders index.jade but sends it to the client // with status 200 and content-type text/html on GET /render
> res.render with third parameter
app.get('/render',html) { console.log(html); res.send('done'); }) }) // logs the same as app.render and sends "done" to the client instead // of the content of index.jade
> res.render
内部使用app.render
渲染模板文件。
>您可以使用render函数创建html电子邮件。根据应用程序的结构,您可能并不总是拥有应用程序对象的访问权限。
例如在外部路由内:
app.js
var routes = require('routes'); app.get('/mail',res) { // app object is available -> app.render }) app.get('/sendmail',routes.sendmail);
routes.js
exports.sendmail = function(req,res) { // can't use app.render -> therefore res.render }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。