자바스크립트 코드 안에 응답 문자열을 입력하는 것보다 응답 웹문서를 별도 파일로 만들어 사용하는 것이 더 좋다.
08-1 ejs 뷰 템플릿 사용하기
뷰 템플릿을 사용하면 웹 문서의 기본 형태는 뷰 템플릿으로 만들고 데이터베이스에서 조회한 데이터를 이 템플릿 안의 적당한 위치에 넣어 웹 문서를 만들게된다. 이렇게 뷰 템플릿을 사용해 결과 웹 문서를 자동으로 생성한 후 응답을 보내는 역할을 하는 것이 View Engine이다.
뷰 템플릿으로 로그인 웹 문서 만들기
//뷰 엔진 설정
app.set('views',__dirname+'/views');
app.set('view enginge','ejs');
console.log('뷰 엔진이 ejs로 설정되었습니다.');
res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
// 뷰 템플릿을 이용하여 렌더링한 후 전송
var context = {results : results};
req.app.render('listuser',context,function(err,html){
if(err){throw err;}
res.end(html);
});
//뷰 템플릿 설정
app.set('views',__dirname+'/views');
app.set('view engine','pug');
pug로 HTML문서 만들기
pug는 공백을 두 개사용하여 들여쓰기를 한다.
pug 템플릿으로 로그인 웹 문서 만들기
doctype html
html
head
meta(charset='utf8')
title 로그인 성공 페이지
body
h1 로그인 성공
div
p 사용자 아이디 : #{userid}
div
p 사용자 이름 : #{username}
br
br
a(href = '/public/login.html') 다시 로그인하기
res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
//뷰 템플릿으로 렌더링한 후 전송
var context = {userid: paramId,username:username};
req.app.render('login_success',context,function(err,html){
if(err){throw err;}
console.log('rendered : '+html);
res.end(html);
});
pug 템플릿으로 사용자 리스트 웹 문서 만들기
doctype html
html
head
meta(charset='utf8')
title 사용자 리스트 페이지
body
h1 사용자 리스트
div
ul
- for (var i=0;i<results.length;i++){
- var curId = results[i]._doc.id;
- var curName = results[i]._doc.name;
li #{i} - 아이디 : #{curId},이름 #{curName}
- }
br
br
a(href = '/public/listuser.html') 다시 요청하기
//뷰 템플릿으로 렌더링한 후 전송
var context = {results : results};
req.app.render('listuser',context,function(err,html){
if(err){
console.error('뷰 렌더링 중 오류 발생'+err.stack);
res.writeHead('200', {'Content-Type':'text/html;charset=utf8'});
res.write('<h2>뷰 렌더링 중 에러 발생</h2>');
res.write('<p>' + err.stack + '</p>');
res.end();
return;
}
console.log('rendered : '+html);
res.end(html);
});
pug 템플릿으로 사용자 추가 웹 문서 만들기
doctype html
html
head
meta(charset='utf8')
title extends로 상속함
script(src = 'public/jquery-2.1.4.min.js')
body
block content
include ./footer.pug