지금까지 app.js 파일의 내용을 변경하고나서는 매번 node app.js 라고 커맨드창에 입력하여 재실행해줬다. 

만약 supervisor 모듈을 사용할 경우에는 app.js 파일의 내용을 수정하더라도, 다시 재시작을 하지 않고도 자동으로 재실행 되게 할 수 있다.  

npm install supervisor -g 를 입력하여 설치해주자.


node app.js 로 실행시키지않고,

supervisor app.js 로 실행시켜주자.



app.js 파일을 열어서 수정한 후에 save 시켜주면,

자동으로 서버가 재시작 되는 것을 확인 할 수 있다. 



const express =require('express');    // 모듈을 가져오자.

const app= express();   //express().get 이런식으로 사용해도 되지만! 가독성을 높여주기 위하여 app이라는 상수에 담아주자.

const bodyParser = require('body-parser'); 


app.locals.pretty= true;     // 코드를예쁘게해준다.

app.set('view engine','jade');

app.set('views','./views');


// use라는 api를 사용하여 express의 정적서비스를 app.js에서 사용할 수 있도록 연결시키자.

// public 디렉토리 안의 정적인 파일들을 직접적으로 사용할 수 있게 하는 코드

app.use(express.static('public'));  


// use라는 api를 사용하여 body-parser를 app.js에서 사용할 수 있도록 연결시키자.

app.use(bodyParser.urlencoded({extended: false}));

// 이렇게 미들웨어를 들여오고 use로 이 미들웨어(body-parser를 연결시켜서 request 객체의 body api를 사용할 수 있게 만든다.)



app.get('/', function(request, response){     // get 방식  // get을 라우터(길 안내자)로 생각하자.

response.send('hello world');

});


app.get('/rout',function(req, res){

res.send('<h1>hello router</h1>, <img src="/router.png">');

});


app.get('/login', function(req, res){

res.send('Login please');

});


app.get('/template', function(req, res){

res.render('temp',{_title:'jade',time:Date()});

});


app.listen(3000, function(){

console.log('connected 3000 port');

});



//서로 다른 네트워크를 중계해주는 장치. 보내지는 송신정보에서 수신처 주소를 읽어 가장 적절한 통신통로를 지정하고, 다른 통신망으로 전송하는 장치를 말한다.


//============================================================================================

// 정적인 파일을 모아놓은 (나의 경우 public)디렉토리는 패키지로 선언한 해당 디렉토리(package.json 파일이 있는..)에 위치시키자.  



// 작은 따옴표아니다. 물결표시 밑에 그래이브액센트?

// var a = ``; 그래이브 액센트 ``를 사용하여 html코드를 변수에 담아 해당 변수를 사용할 수 있다. 


 

app.get('/dynamic', function(req, res){

var time =Date(); 

var lis = '';

for(var i=0; i<5; i++){

lis = lis + '<li> coding</li>';

}

var output = `<!DOCTYPE html> 

<html>

<head>

<meta charset="utf-8">

</head>

<body>

Hello, Dynamic!

<ul>

${lis} 

<!--변수를 담아서 표현하는 방법 use 그래이브 액센트-->

</ul>

${time}

</body>

</html>`;        

res.send(output);

});


//============================================================================================


// 주의할 부분

// app.get('/info',function(req, res){

// res.send('hello')   로직상 가장 위에 있는 것만 응답객체에 실어서 보내지고 그다음껀 보내지지 않는다. 

// res.send(req.query.id);  

// });

app.get('/info',function(req, res){

res.send(req.query.name+','+req.query.id);     // req요청객체에 쿼리스트 링을 실어서!

});



app.get('/topic',function(req, res){

var topics =[

'javascript is the client language'

,'nodejs is the server side javascript'

,'express is a module of extra modules'

];


//`의 경우 작은 따옴표아닌것 알아두자.


var output = `

<a href = "/topic?id=0">Java Script</a><br/>

<a href = "/topic?id=1">Node js</a><br/>

<a href = "/topic?id=2">Express</a><br/>

${topics[req.query.id]}

`;

res.send(output);

});


//============================================================================================



app.get('/board/:number',function(req, res){

var boards =[

'javascript is the client language'

,'nodejs is the server side javascript'

,'express is a module of extra modules'

];



var output = `

<a href = "/board/0">Java Script</a><br/>

<a href = "/board/1">Node js</a><br/>

<a href = "/board/2">Express</a><br/>

${boards[req.params.number]}

`;

res.send(output);

});


//============================================================================================



app.get('/content/:number/:mode/:name',function(req, res){

var output=`

<h1>number : ${req.params.number}</h1>

<h2>mode : ${req.params.mode}</h2>

<h3>name : ${req.params.name}</h3>

`;

res.send(output);

});


// path 의 갯수를 맞춰줘야만한다. 만약 http://127.0.0.1:3000/content/0/1 정상적으로 화면이 뿌려지지 않는다. 


//============================================================================================


app.get('/form',function(req, res){

res.render('form');

});


app.get('/form_receiver', function(req, res){

var tit = req.query.title;

var des = req.query.description;

var output = `

<h2>title : ${tit} </h2>

<h2>description : ${des} </h2>

`;

res.send(output);

}); 


//============================================================================================



// post방식을 처리할 때는 app.post로 하는 것이 맞다. 

// 아래의 경우에는 request객체의 query를 사용한 것

// undefined 가 뜬다. title, description에 undefined .

// app.post('/form_receiver',function(req, res){

// var tit = req.query.title;

// var dsc = req.query.description;

// res.send('title: '+ tit+' and descriptrion: '+ dsc);

// });



// 기본적으로 request 객체 req 안에 사용자가 요청한 정보들이 들어가 있다.

// 즉, req의 query를 사용하여 title을 받아올 수 없다.

// 그럼 어떻게 post 방식으로 처리하였을 때 form_receiver 패쓰로 접근시 값을 나타낼 수 있는가.

// req 객체의 query가아닌 body로 받아줘야한다.

// 그런데 제약이 있다. body api를 사용하기 위해서는 body-parser 혹은 multer와 같은 middleware(미들웨어)를 사용하여 제어해야한다.

// body-parser 모듈을 설치해보자. npm install body-parser --save

// var bodyparser = require('body-parser'); 를 app.js에 입력하여 해당 모듈을 들여오자.

// app.js로 들어오는 모든 요청들은 body-parser라는 미들웨어를 먼저 통과한 다음에 라우터가 동작하게 된다.


// 결론

// get 방식의 경우에는 express 가 기본적으로 query api를 제공하지만 , 

// post방식의 경우에는 기본적으로 body api를 제공하지 않으므로,

// body-parser 혹은 multer와같은 미들웨어가 따로 필요하다.

// 그래서 위와같은 미들웨어를 npm으로 설치한 후에 1.require --> 2.use 를 이용하여 사용한다. 



// url에 127.0.0.1:3000/post로 접근할 경우에는 get방식으로 접근해야한다. 

// 그 이유는 url에 path를 입력하고 들어가는 것이므로 post방식으로 접근해서는 안된다. 올바르게 찾아가지 못한다.

app.get('/post',function(req, res){

res.render('post');

});


// request 객체의 body를 사용해보자.

app.post('/form_receiver',function(req, res){

var tit = req.body.title;

var des = req.body.description;

var output = `

<h2>title : ${tit}</h2>

<h2>description : ${des}</h2>

`;

res.send(output);

});




'nodejs' 카테고리의 다른 글

(22) supervisor 를 사용해보자.  (1) 2016.06.07
(20) 데이터 전송 (POST 방식)  (0) 2016.06.02
(19) 데이터 전송 (GET 방식)  (0) 2016.06.02
(18) GET vs POST  (0) 2016.06.01
(17) semantic url (의미론적 url) vs 쿼리스트링 방식  (0) 2016.06.01

어떻게 하면 post방식으로 보낸 데이터를 서버측에서 확인할 수 있는가?


요약.

// get 방식의 경우에는 express 가 기본적으로 query api를 제공하지만 , 

// post방식의 경우에는 기본적으로 body api를 제공하지 않으므로,

// body-parser 혹은 multer와 같은 미들웨어가 따로 필요하다.

// 따라서 위와같은 미들웨어를 npm으로 설치한 후에 1.require --> 2.use 를 이용하여 사용한다. 


==========================================================

post.jade


doctype html

html

head    

meta(charset='utf-8')

body

form(action='/form_receiver' method='post')

p

input(type='text' name='title')

p

textarea(name='description')

p

input(type='submit' value='forward Server')



// post 방식으로 해보자.

// post 방식을 사용했을 경우에는 정상적으로 아래의 정보들이 넘어가지를 않는다.

==========================================================


app.get('/postGo', function(req, res){

res.render('post');    

});

// express 의 get으로 처리하면 안된다.

post방식을 처리할 때는 app.post로 하는 것이 맞다. 



아래의 경우에는 request객체의 query를 사용한 것

// undefined 가 뜬다. title, description에 undefined .

// app.post('/form_receiver',function(req, res){

// var tit = req.query.title;

// var dsc = req.query.description;

// res.send('title: '+ tit+' and descriptrion: '+ dsc);

// });


기본적으로 request 객체 req 안에 사용자가 요청한 정보들이 들어가 있다.

즉, req 의 query를 사용하여 title을 받아올 수 없다.

그럼 어떻게 post 방식으로 처리하였을 때 form_receiver 패쓰로 접근시 값을 나타낼 수 있는가.

req 객체의 query가아닌 body로 받아줘야한다.

제약이 있다. body api를 사용하기 위해서는 body-parser 혹은 multer와 같은 middleware(미들웨어)를 사용하여 제어해야한다.

body-parser 모듈을 설치해보자. npm install body-parser --save



var bodyparser = require('body-parser'); 를 app.js 입력하여 해당 모듈을 들여오자.

app.js로 들어오는 모든 요청들은 body-parser라는 미들웨어를 먼저 통과한 다음에 라우터가 동작하게 된다.

이렇게 미들웨어를 들여오고 use로 이 미들웨어(body-parser를 연결시켜서 request 객체의 body api를 사용할 수 있게 만든다.

================================================================

++ app.js 


const bodyParser = require('body-parser'); 

app.use(bodyParser.urlencoded({extended: false}));


// request 객체의 body를 사용해보자.

app.post('/form_receiver',function(req, res){

var tit = req.body.title;

var dsc = req.body.description;

res.send('title: '+ tit+' and descriptrion: '+ dsc);

});

================================================================


get 방식과 달리, url 상에서 요청정보에 대한 값이 나타나지 않음을 볼 수 있다. 


express(모듈)와 jade(모듈)를 로드하여 get방식으로 데이터를 전송하는 것을 알아보자. 


views 폴더 밑에 form.jade 파일을 위치시켜 놓았다.


==================================================================

// form.jade 파일을 봐주자.


doctype html

html

head

meta(charset='utf-8')

body

form(action='/form_receiver' method='get')      // 디폴트값은 get방식이다.    

p

input(type='text' name='title')     // post 방식으로 데이터를 전송하는 경우 Cannot GET

p                                                         //  / form_receiver?.....이 나타난다. 

textarea(name='description')

p

input(type='submit' value='forward Server')


// jade의 주석처리는 이것으로 한다.

// get 방식을 해보았다.

==================================================================

++app.js 에 추가해주자.


app.get('/form',function(req, res){

res.render('form');

});

==================================================================

url: 127.0.0.1:3000/form 으로 접근시에 views 안에 위치한 form.jade 파일을 랜더링하는 것 알아두자. (res.render('form'))


node app.js를 실행시켜주자.

// text 박스와 textarea 에 값을 입력해주자.


페이지 소스보기를 해보자.



// form_receiver 에대한 패쓰를 지정해주지 않았으므로 아래와같이 Connot GET ~~가 출력된다.

폼태그에서 GET 방식으로 name=title, description과 value=12,123을 넘길 경우 웹브라우저에서 자동적으로 쿼리스트링을 생성해주는 것 알아두자.


=====================================================================================

++ app.js 에 라우터(/form_receiver)를 만들어주자.


app.get('/form_receiver', function(req, res){

var tit = req.query.title;

var des = req.query.description;

var output = `

<h2>title : ${tit} </h2>

<h2>description : ${des} </h2>

`;

res.send(output);

}); 

======================================================================================

가장 위의 forward Server 서브밋버튼을 누를 경우 form_receiver 패쓰로 가게 된다. 이 때는 아래와 같은 화면을 뿌려준다. 


 post 방식으로 데이터를 전송하는 경우에는 Cannot /form_receiver ...가 출력된다. 

그리고 url 뒤의 쿼리 스트링이 나타나지 않는다. 

이때는 사용자가 입력한 정보가 서버로 잘 전송이 된 상태지만 post방식의 경우에 url 대신 header 에 정보를 실어서 전송하기 때문에 url에 그 값들이 보이지 않는 것이다. 단순히 방법의 차이이다.  


어떻게하면 post방식으로 보낸 데이터를 서버측에서 확인할 수 있는가?를  다음 글에서 알아보자. 

간단하게 이해해보자.  게시판을 만든다고 가정해보자.

Get방식은 정보를 URL에 붙여서 넘기게 되며, Post방식은 Header를 통해 정보를 전송하는 방식이다.


1. 

사용자가 서버에 정보를 전달하고 일반적으로 정보를 요청할 경우에는 주로 GET 방식으로 (select) 한다.

GET은 Select적인 성향을 가지고 있다. GET은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태등을 바꾸지 않는다. (게시판의 리스트라던지 글보기 기능 같은 것)

정보를 요청하고 서버로부터 정보를 가져오는 곳에 GET을 사용해야 이유: 웹의 주요 목적이라고 할 수 있는 link문제이다. 

기본적으로 웹에서 모든 리소스는 link할 수 있는 url을 가지고 있어야하기때문이다.  특정페이지의 주소를 다른 사람에게  주기 위해 주소창의 URL을 복사해서 줄 때를 생각하면 된다. 단점은 url로 전달할 수 있는 요청 정보의 양이 한정되어 있다는 것이다. 또한 그 정보들이 노출되므로 보안상에 문제가 될 수 있다는 것이다. 


2. 

반면, POST는 서버의 값이나 상태를 바꾸기 위해서 사용한다. 

사용자가 서버부터 정보를 전달하고 특정 정보를 가져오는 것 보다, 사용자의 정보를 서버에 전송하는데 더 큰 비중을 둘 때에는 POST 방식으로 정보를 전달한다. ex)로그인을 생각하면 편하다.

(insert, modify)

( 글쓰기를 하면 글의 내용이 DB에 저장이 되고 수정을 하면 DB값이 수정된다. )

POST를 방식을 사용할 결우에는 값이 내부적으로 http header에 숨겨져서 전달된다. 

글을 저장하는 경우에는 URL을 제공할 필요가 없기 때문에 POST를 해도 상관이 없는 것이다.

전달할 수 있는 데이터의 양이 제한적이지 않고, url상에 정보가 노출되지는 않지만, get 방식에 비해 처리속도가 늦어진다는 것이 단점이다. (url 상에서 정보가 노출되지 않는다고 해서 보안상 문제가 없다고 할 수 없다.  이문제에 대해서는 차 후에 알아보자.)










일반적으로는 쿼리스트링 방식의 url이 중요하지만 

semantic url에 대해서도 알아보자.

Non-semantic URLSemantic URL
http://example.com/index.php?page=namehttp://example.com/name
http://example.com/index.php?page=consulting/marketinghttp://example.com/consulting/marketing
http://example.com/products?category=2&pid=25http://example.com/products/2/25
http://example.com/cgi-bin/feed.cgi?feed=news&frm=rsshttp://example.com/news.rss
http://example.com/services/index.jsp?category=legal&id=patentshttp://example.com/services/legal/patents
http://example.com/kb/index.php?cat=8&id=41http://example.com/kb/8/41
http://example.com/index.php?mod=profiles&id=193http://example.com/profiles/193












예를 들어 

127.0.0.1:3000/topic/1 로 접근했다고 가정하자. 

만약  app.js에

app.get('/topic',function(req, res){

res.send('Hello Semantic url');

});

이와 같은 로직을 작성했다고 한다면,

화면상에는 아래와 같이 나타날 것이다. 


그이유는 app.js에는  '/topic' 으로만 path를 잡아줬기때문이다. 

만약 app.js에 app.get('topic/1'...)로 path를 잡아줬다면???

아래와 같이 정상적으로 실행될것이다. 


그렇다면 어떤방식으로 path를 잡아줘야 url의 path에 관계없이 동일한 화면을 출력할 수 있을까?


해결방법은 

app.js에 '/board/:number  이렇게 (콜론): 과 함께  특정 name을 주면 된다. 

물론 '/board/:number/:mode/:name   여러개가 와도 정상적으로 접근가능하다. 

그러면 이 두개를 전부 실습 해보자. 


주의해서 볼것! 

1. req.send.number가 아닌 req.params를 사용한다. req.params.number 

2. 링크를 걸어둔 href="board/0"  (실수했었음.)

==========================================================================

app.js에 추가해보자. 


app.get('/board/:number',function(req, res){

var boards =[

'javascript is the client language'

,'nodejs is the server side javascript'

,'express is a module of extra modules'

];



var output = `

<a href = "/board/0">Java Script</a><br/>

<a href = "/board/1">Node js</a><br/>

<a href = "/board/2">Express</a><br/>

${boards[req.params.number]}

`;

res.send(output);

});

==========================================================================


127.0.0.1:3000/board/10000 으로 접근할 경우에도 정상적으로 화면이 나타난다. 


==========================================================================

++ app.js 에 추가해보자. 


app.get('/content/:number/:mode/:name',function(req, res){

var output=`

<h1>number : ${req.params.number}</h1>

<h2>mode : ${req.params.mode}</h2>

<h3>name : ${req.params.name}</h3>

`;

res.send(output);

});


==========================================================================


// path 의 형식을 맞춰줘야만한다. 만약 http://127.0.0.1:3000/content/0/1 로 접근할경우에는 

// name에 해당하는 패쓰값이 없으므로 아래와 같이 정상적으로 화면이 뿌려지지 않는다. 




app.js 에 추가한 후 url: 127.0.0.1:3000/topic으로 접근해보자.


============================================================

app.js 

++ 붙여넣기


app.get('/topic',function(req, res){

var topics =[

'javascript is the client language'

,'nodejs is the server side javascript'

,'express is a module of extra modules'

];

var output = `

<a href = "/topic?id=0">Java Script</a><br/>

<a href = "/topic?id=1">Node js</a><br/>

<a href = "/topic?id=2">Express</a><br/>

${topics[req.query.id]}

`;

res.send(output);

});

========================================================

127.0.0.1:3000/topic 으로 접근

Java Script 클릭

Node js 클릭



Express 클릭




http://a.com/index

http://a.com/login

http://a.com/topic

login이라는 하나의 라우터(path)로 아이디값 즉 쿼리스트링을 다르게 줌으로써 다른 결과를 나타낼 수 있다.

http://a.com/login?id=1

http://a.com/login?id=2

http://a.com/login?id=3


http: 프로토콜 

a.com: 도메인 네임

/login: path

id=1: query string(쿼리스트링)

http://a.com/login : url

http://a.com/login?id=1 :uri


===========================================================================

<app.js>

app.get('/info',function(req, res){

res.send(req.query.id);

});

<description>

req.query.id (요청객체.쿼리스트링.name값)    // 여기서 name=id 

127.0.0.1:3000/info?id=success87 로 접근시  (<< url에서 쿼리스트링: id=success87)


===========================================================================

++ app.js 에 추가해주자..

//app.get('/info',function(req, res){
// res.send('hello')             
// res.send(req.query.id);
//});

app.get('/info',function(req, res){
res.send(req.query.name+','+req.query.id);
});
=======================================================================

url: 127.0.0.1:3000/info?id=success87&name=Sean 으로 접근시 

Sean, success87이 화면에 출력된다. 

127.0.0.1:3000/info 으로 접근할 경우에는 undefined, undefined

마찬가지로 127.0.0.1:3000/info?id=success87 으로만 접근하면 undefined,success87 가 출력된다. 

위에서 보다시피 url로 접근시 id와 name의 쿼리스트링 위치(순서)는 문제가 되지 않는다. 


주의할 것!

그렇다면 만약 app.js에서 주석처리되어있는 위의 로직을 해제한다면?

생각한대로 url로 접근시 

정상적으로 로직이 전부 실행되지는 않는다. 

로직상 가장 위에 있는 것만 응답객체에 실어서 보내지고 그다음껀 보내지지 않는다. 


jade문법 간단하게 알아보자.

1. 들여쓰기를 해야한다.

2. 줄바꿈을 할 경우 태그로 인식되므로 주의하자.

3. 줄바꿈을 하지 않고 띄어쓰기를 하면, 해당 태그의 text값을 의미하게 된다. ex) h1 Hello Jade! >>  <h1>Hello Jade!</h1> 

4. 페이지 소스보기를하여 예쁘게 보기위해서는 app.locals.pretty= true;를 app.js에 입력해주자.

5. 화면에 출력되지 않는 코드 즉, 함수와 같은 경우에는 -를 붙여야한다.

예를 들어 for문을 사용하기 위해서는 -for(var i= 0; i<5; i++){}이런식으로 사용해야 한다. 

6. 사용하고싶은 변수or객체가 있다면 app.js 에서 객체를 만들어주고 res.render('temp', 두번째인자);

두번째 인자로 변수를 주입해주어야한다. 변수가 두개일 경우에는 두 변수와 값을 포함하여{ } 중괄호로 묶어주자.   

7. jade에서 태그에 속성을 주고 싶은경우에는 태그 뒤에 괄호를 사용하여 나타내면 된다. 

예. meta(charset='utf-8')

8. 주의할것 notepad메모장에서 작성할 경우 태그뒤에 공백이 있어서는 안된다. 반드시 공백을 없애야한다.

안그러면 에러가 난다. 

============================================================================

app.js 에 추가해주자. 


app.get('/template',function(req, res){

res.render('temp',{_title:'jade',time:Date()});

});

============================================================================

============================================================================

temp.jade


html

head

   meta(charset='utf=8')

title=_title

body

h1 Hello Jade!

ul

-for(var i=0; i<5; i++)

li coding

div=time

============================================================================

127.0.0.1:3000/template 로 접속하여 확인해주자.

해당 페이지의 소스보기를 해보자.

 


템플릿 엔진의 장점 


1. 짧은코드로 장황한 html 코드를 표현할 수 있다. 

++ jade 파일에 외부에서 변수를 선언, 정의하고 변수를 주입시켜 사용할 수 있다. 

2. express(외부 모듈)의 정적파일 서비스에 대한 장점을 구현해 낼 수 있다. (코드를 변경하더라도 app.js를 다시 실행시킬 필요 없음)

3. express(외부 모듈)의 동적 웹페이지에 대한 장점을 구현해 낼 수 있다. 함수를 사용할 수 있으며, for문과 같은 반복문을 사용할 수 있다. 

========================================================================

temp.jade


html

head

title=_title      //(14)번 글 참고 http://sourceflower.tistory.com/14

body

h1 Hello Jade!

ul

-for(var i=0; i<5; i++)

li coding

div=time      //(14)번 글 참고 http://sourceflower.tistory.com/14


// jade 문법에 유의하자.

// div=time   

// temp.jade 외부에서 time이라는 변수를 만들어 주입해 준 것이다.  (14)번 글 참고 http://sourceflower.tistory.com/14

// ※주의 할것. 제이드 문법에서 공백을 두면 error가 발생한다.

// 들여쓰기를 정확히 해야만 for문등이 제대로 실행된다. 


=========================================================================

※ 템플릿 엔진의 종류는 여러 개가 있다.  그 중 jade를 사용할 것이다.  (Express 모듈에서 recommended)

1. 따라서 npm을 이용하여 jade를 인스톨 시켜줘야 한다. 

npm install jade --save 

jade(템플릿 엔진)를 설치한 후에는 express(nodejs가 기본적으로 제공하는 모듈이 아닌 외부 모듈)에 알려줘야 한다. 

2. view engine,  사용할 템플릿 엔진을 설정해줘야 한다. 

app.set('view engine', '사용할 템플릿 엔진');   // jade를 사용할 것.

3. views, 템플리트가 있는 디렉토리를 설정해줘야한다.

app.set('views','템플리트가 있는 디렉토리')     // 템플리트가 있는 디렉토리의 경우 관습적으로 views로 사용한다. 

4. app.js 에 express를 이용하여 비동기방식으로 콜백함수 로직을 작성해보자. (res.render('파일명')사용)

app.get('/temp', function(req, res){     // res.send 대신 res.render를 사용한다. 

res.render('파일명');     // views 디렉토리에 있는 특정 파일(ex: temp)을 렌더링해서 화면상에 뿌려준다. 

}

※ 랜더링 

사전적의미: 렌더링(Rendering)은 컴퓨터 프로그램을 사용하여 모델(또는 이들을 모아놓은 장면인 씬(scene) 파일)로부터 영상을 만들어내는 과정을 말한다

// 여기서 렌더링은 jade 문법으로 작성한 로직을 jade 템플릿엔진을 사용하여 화면상에 뿌려주는 의미에서 렌더이다. 

// template 경로로 들어온 사용자에게 위와같은 function이 실행되면서 temp.jade 라는 파일을 찾아서 

웹페이지로 랜더링(jade의 문법에 의존하여 해석한 그 결과)해서 전송한다라는 의미.


=========================================================================

app.js


const express = require('express');

const app = express();

app.locals.pretty= true;     // 코드를예쁘게해준다.

app.set('view engine','jade');

app.set('views','./views');

app.get('/template', function(req, res){

res.render('temp');        

});

 //  template 경로로 접속할 경우 views 폴더 안에 있는 파일명인 temp인 파일을 렌더링해서 화면에  뿌려준다.

위 페이지의 소스보기를 할 경우 아래와같이 소스코드가 붙어서 나온다 이러한 소스코드를 파악하기는 어렵다. 

따라서 app.js 에 코드를 예쁘게 정리해주는 app.locals.pretty= true;  이것을 작성해주자. 

app.locals.pretty= true;     // 소스보기를 하여 열어보았을 때 아래와 같이 코드를예쁘게해준다.




+ Recent posts