express.js에서“app.render”와“res.render”의 차이점은 무엇입니까?
에 대한 문서 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 이메일이 떠 오릅니다.
along with these two variants, there is also jade.renderFile
which generates html that need not be passed to the client.
usage-
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()
is available as a route in app.js.
'Development Tip' 카테고리의 다른 글
목표 C-할당, 복사, 유지 (0) | 2020.10.09 |
---|---|
컴파일 오류 :“g ++ : 'cc1plus'를 실행하는 동안 오류 발생 : execvp : 해당 파일 또는 디렉터리가 없습니다.” (0) | 2020.10.09 |
JS-base64 코드에서 이미지 너비와 높이 가져 오기 (0) | 2020.10.09 |
다른 호스트간에 Docker 컨테이너를 이동하는 방법은 무엇입니까? (0) | 2020.10.09 |
MySql에서 기본값으로 함수를 사용할 수 있습니까? (0) | 2020.10.09 |