템플릿엔진은 정적페이지와 동적페이지의 장점과 단점을 결합한 형태의 새로운 체계이다.

템플릿을 읽어 문법에 따라 HTML 파일로 변환시켜주는 모듈이다.

코드상단에 html작성하면 html의 시작태그와 끝나는태그를 자동으로 생성해준다.

head title body 코드도 자동으로 생성한다.

템플릿 엔진 안에서는 for문이나 변수도 사용할수 있다.


사용방법

cmd 창에서 npm 패키지 디렉터리로 들어가 npm install jade --save 를 입력해 설치한다.

npm패키지 디렉터리에다 views라는 디렉터리를 생성하고 (관습적으로 views 라는 이름을 많이사용)

views 폴더에 temp.jade 라는 파일을 생성한다.



app.js파일의 코드를 작성한다.

app.set('view engine,'jade'); 코드를 작성해 템플릿 엔진을 세팅하고 express와 연결한다.

app.set('views','./views'); 코드는 템플릿이 있는 디렉터리를 express에게 알려주는 코드이다.

res.render('temp'); temp.jade 파일을 찾아 템플릿 파일을 jade 문법에따라서 해석한 결과를 사용자에게 응답하는코드

render() 함수의 두번째매개변수로는 해당 jade파일에서 사용할 객체에 변수를 담아 전달해준다.


app.js

 

 

var express = require('express');

var app = express(); app.locals.pretty = true; //템플릿 엔진 코드에 들여쓰기 적용해주는 코드 app.set('view engine','jade'); //템플릿 엔진을 세팅하고 express와 연결하는 코드 app.set('views','./views'); //템플릿이 있는 디렉터리를 express에게 알려주는 코드 app.use(express.static('public')); app.get('/template',function(req,res){ res.render('temp',{time:Date(),title:'jade'}); //렌더링메소드 템플릿파일을 읽어와 사용자에게 전송 }); //첫번째인자는 파일명 두번째 인자로 객체에 현재시간 과 문자열 담아 temp파일에 주입 app.get('/', function(req,res){ res.send('Hello World'); }); app.listen(3000,function(){ //3000번 포트 리스닝 console.log('Connected 3000 port'); //리스닝이 실행되면 콘솔에 출력 });



jade는 줄바꿈시에 태그가 되어버리기 때문에 태그와 같은줄에 내용을 작성해야 한다.

- 를 붙여줘야 jade엔진에서 for문이 동작한다.

변수를 사용하려면 app.js파일에서 객체를 만들어 jade 파일에 주입시켜야한다.

태그에 =를붙이고 주입된 변수명을 입력하면 변수의 값을 불러올수 있다.ex)div= time


temp.jade

 

html

head title= title //app.js에서 받은 변수 body h1 hello jade ul -for(var i =0; i<5;i++) //-를 붙여줘야 jade엔진에서 for문이 동작한다. li coding div= time //app.js에서 받은 변수




'Node.js' 카테고리의 다른 글

post 방식 데이터 전달 / 사용  (0) 2017.02.26
URL을 이용한 get방식 데이터 전달 / 사용  (0) 2017.02.26
정적페이지 / 동적페이지 표현  (0) 2017.02.26
Express 로 웹 애플리케이션 만들기  (0) 2017.02.26
모듈  (0) 2017.02.26

동적페이지


동적페이지는
변수안에 코드를 담아 response의 매개변수로 전달한다.
탭키 위의 특수한 기호인 `키 안에 코드를 작성하게되면 보기좋게 코드를 작성이 가능하다.
이 기능은 formatted text 라고한다.
${변수명} 은 동적페이지 코드 안에서 변수를 나타날수 있게 한다.
동적페이지는 변경될 때마다 노드 애플리케이션을 재부팅 해야한다.

 

var express = require('express');//익스프레스 모듈 로드해 변수에 저장 var app = express(); //애플리케이션이라는 객체를 리턴한다. app.use(express.static('public')); // 정적인 파일이 위치할 디렉터리를 지정하는 코드 app.get('/', function(req,res){ // 페이지 요청시 res.send('Hello World'); //화면에 출력 }); app.get('/dynamic', function(req, res){ var lis = ''; for(var i=0; i<5; i++){ lis = lis + '<li>coding</li>'; //lis 변수에 문자열 5번 저장 } var time = Date(); //현재 날짜 ,시간 //formatted text var output = ` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> Hello, Dynamic! <ul> ${lis} </ul> ${time} </body> </html>`; res.send(output); }); app.listen(3000,function(){ //3000번 포트 리스닝 console.log('Connected 3000 port'); //리스닝이 실행되면 콘솔에 출력 });

 ​



정적페이지


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

위 코드로 public 폴더를 정적 파일로 지정한 뒤 
public 폴더에 html 파일을 위치시키고 /파일명 으로 요청하게되면 
요청한 html파일이 브라우저에 나타나게된다.




정적인 파일은 수정시 서버에 바로 반영이된다. 요청이 들어올 때마다 노드 애플리케이션이 잡아주기때문에
서버를 리부팅할 필요가 없다.

 


'Node.js' 카테고리의 다른 글

post 방식 데이터 전달 / 사용  (0) 2017.02.26
URL을 이용한 get방식 데이터 전달 / 사용  (0) 2017.02.26
jade 템플릿 엔진  (0) 2017.02.26
Express 로 웹 애플리케이션 만들기  (0) 2017.02.26
모듈  (0) 2017.02.26

Express 는 node.js 로만들어진 웹 프레임워크이다.


설치방법은 커맨드창에서 프로젝트 폴더로 들어가  npm init 명령어를 통해 npm 프로젝트로 선언후 

npm install --save express 명령어를 실행하면 설치된다.



프로젝트 디렉터리에 app.js 라는 파일을 생성한다 이파일은 

메인파일 또는 메인애플리케이션 또는 엔트리애플리케이션 이라 부른다.

애플리케이션을 동작하게하고 가장 최초로 실행되는 파일이다.

관습적으로 app.js 라는 이름을 많이 사용한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
var express = require('express');//익스프레스 모듈 로드해 변수에 저장
 
var app = express(); //애플리케이션이라는 객체를 리턴한다.
app.get('/'function(req,res){ // 페이지 요청시
res.send('Hello World');  //화면에 출력
});
app.get('/login'function(req,res){ //login 이라는 요청시
res.send('login please'); 
});
 
app.listen(3000,function(){ //3000번 포트 리스닝
  console.log('Connected 3000 port'); //리스닝이 실행되면 콘솔에 출력
});
 
cs


익스프레스로만들 애플리케이션을 제어하기 위해서는 익스프레스 모듈을 통해서

애플리케이션이라는 객체를 만들어야 한다.


사용자가 접속했다는 화면을 보여주려면 get 함수를 호출한다.

사용자가 get방식으로 접속한 사용자를 받기위한 함수이다.

첫번째 매개변수인 /는 홈이라는 뜻이다. 두번째 매개변수인 함수는

사용자가 get 함수를 통해 홈으로 접속하면 실행된다.

함수는 형태가 약속되어있다. 첫번째 매개변수는 request 두번째 매개변수는 response 이다.

res 의 send 함수는 인자로 전달된 값을 응답한다.


app객체는 listen이라는 메서드가 있다.

이메서드에 포트번호를 지정해주면 웹 애플리케이션이 해당 포트번호를 리스닝할수있게된다.

리스닝이 성공하게되면 콜백함수가 실행되면서 화면에 Conneted 3000 port 라고 출력된다.


리스닝 실행후 콘솔에 출력된 메세지



get방식으로 페이지 요청시에 화면에 나타난 메세지



/login 페이지 요청시 화면에 나타난 메세지



정적파일 서비스 방법





 

var express = require('express');//익스프레스 모듈 로드해 변수에 저장

var app = express(); //애플리케이션이라는 객체를 리턴한다. app.use(express.static('public')); // 정적인 파일이 위치할 디렉터리를 지정하는 코드 app.get('/', function(req,res){ // 페이지 요청시 res.send('Hello World'); //화면에 출력 }); app.get('/login', function(req,res){ // /login 이라는 요청시 res.send('login please'); //로그인 요청 메시지 출력 }); app.get('/image', function(req,res) {// /image 라고 요청시 res.send('<img src= "/BruceLee.jpg">'); //이미지태그 }); app.listen(3000,function(){ //3000번 포트 리스닝 console.log('Connected 3000 port'); //리스닝이 실행되면 콘솔에 출력 });


app.use(express.static('public')); 이코드는 정적인 파일이 위치할 디렉터리를 지정한다.

관습적으로 public 이라는 폴더명을 사용한다.

폴더명이 public 인 디렉터리안의 파일을 제공할수 있게된다.


/image 로 요청하면 이미지가 나올수있게 소스를 작성하고 실행하면 이미지가 나오게 된다.




'Node.js' 카테고리의 다른 글

post 방식 데이터 전달 / 사용  (0) 2017.02.26
URL을 이용한 get방식 데이터 전달 / 사용  (0) 2017.02.26
jade 템플릿 엔진  (0) 2017.02.26
정적페이지 / 동적페이지 표현  (0) 2017.02.26
모듈  (0) 2017.02.26

모듈

모듈은 부품이다. 모듈을 가져다 사용할 때에는 require라는 함수를호출한다.

node.js는 애플리케이션을 만드는데 필요한 여러가지 모듈을 기본적으로 제공한다.


NPM(Node Packae Manager)

node.js가 제공하는 모듈이다.



다른사람이 만든 모듈 사용하기


모듈 설치

모듈을 설치하려면 먼저 프로젝트 디렉토리를 npm의 패키지로 지정을 해야한다.

cmd창에서 현재 디렉토리를 npm 패키지로 지정하는 명령어인 npm init 를 입력한다.

npm init 명령어는 package.json 이라는 파일을 생성해준다. 이파일에는 패키지의 여러가지 정보를 기록한다.

name은 프로젝트의 이름을 지정하는 것이다.

descripton은 직접 기술하는것을 권장한다.

entry point는 이패키지를 구동시키는 자바스크립트파일을 지정하는것이다 나중에 변경이가능하다.

test command는 어떤 명령을 실행하면 테스트를 실행시킬수있는지

git repository는 git hub에 올라간다면 그 저장소의 주소를 적는것이다.

여기까지 한다면 다른사람이 만든 모듈을 내 프로젝트에 포함시킬수 있다.








생성된 json 파일


설치는 npm install 명령어로 설치한다. underscore 라는 모듈을 인스톨한다.

설치시 --save 를 붙이게되면 dependencies에 포함이된다.

모듈을 일시적으로 사용하는경우에는 --save를 붙이지않고 설치한다.






모듈 사용법

1
2
3
4
5
6
7
8
9
10
11
12
13
var _ = require('underscore');
 //require함수는 모듈을 가져오고 그 모듈을 사용할수있는 객체를 리턴한다.
 //underscore 는 _ 라는 이름의 변수를 쓰는 관습이 있다.
var arr = [3,6,9,1,12//배열 생성
/*
underscore가 제공하는 기능중에는 자바스크립트의
배열의 기능중 빈약한부분을 채워주는 여러가지 기능을 가지고 있다.
*/
console.log(arr[0]); //배열의 첫번째 원소 출력
console.log(_.first(arr)); //underscore 모듈의 배열의 첫번째 원소를 가져오는 함수
console.log(arr[arr.length-1]); //배열의 마지막 원소 출력
console.log(_.last(arr)); //underscore 모듈의 배열의 마지막 원소를 가져오는 함수
 
cs


+ Recent posts