에 대한 문서 app.render
:
렌더링 된 문자열로 응답하는 콜백으로 뷰를 렌더링합니다. 이는의 앱 수준 변형
res.render()
이며 그렇지 않으면 동일한 방식으로 작동합니다.
에 대한 문서 res.render
:
렌더링 된 문자열로 응답하는 콜백으로 뷰를 렌더링합니다. 오류가 발생하면
next(err)
내부적으로 호출됩니다. 콜백이 제공되면 가능한 오류와 렌더링 된 문자열이 모두 전달되고 자동 응답이 수행되지 않습니다.
어느 것을 언제 사용해야하는지 어떻게 알 수 있습니까?
답변
다음은 몇 가지 차이점입니다.
-
당신은 호출 할 수 있습니다
app.render
에 루트 수준 및res.render
단지 경로 / 미들웨어 내부 . -
app.render
항상html
in the callback function을 반환하는 반면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
세 번째 매개 변수app.get('/render', function(req, res) { res.render('index', {title: 'res vs app render'}, function(err, 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
개체에 대한 액세스 권한이있는 것은 아닙니다 .예를 들어 외부 경로 내부 :
app.js
var routes = require('routes'); app.get('/mail', function(req, 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 }
답변
app.render
보기를 렌더링해야하지만 http를 통해 클라이언트로 보내지 않는 시나리오에서 사용 합니다. html 이메일이 떠 오릅니다.
답변
이 두 가지 변형과 함께 jade.renderFile
클라이언트에 전달할 필요가없는 html을 생성하는 것도 있습니다.
용법-
var jade = require('jade');
exports.getJson = getJson;
function getJson(req, res) {
var html = jade.renderFile('views/test.jade', {some:'json'});
res.send({message: 'i sent json'});
}
getJson()
app.js에서 경로로 사용할 수 있습니다.