Web/Node.js 검색 결과

6개 발견
  1. 미리보기
    2015.06.12 - Palpit

    [Node.js] 6. 외부 웹 모듈 - Node.js 강좌

  2. 미리보기
    2015.06.12 - Palpit

    [Node.js] 5. http 모듈 - Node.js 강좌

  3. 미리보기
    2015.06.12 - Palpit

    [Node.js] 4. 이벤트 - Node.js 강좌

  4. 미리보기
    2015.06.12 - Palpit

    [Node.js] 3. 기본 내장 모듈 - Node.js 강좌

  5. 미리보기
    2015.06.12 - Palpit

    [Node.js] 2. 전역 객체 - Node.js 강좌

  6. 미리보기
    2015.06.12 - Palpit

    [Node.js] 1. 설치 및 애플리케이션 구동 - Node.js 강좌

조회수 확인
Chapter 6. 외부 웹 모듈

 이 장에서 Node.js가 기본적으로 내장하고 있지 않아 일반 개발자가 만들어 배포한 외부 모듈을 살펴볼 것입니다.

 이 장에서는 NPM(Node Package Manager)를 이용하여 EJS 모듈, Jade 모듈처럼 웹과 관련된 모듈을 살펴봅니다.


 npm install ejs

 npm install jade 


 각각 cmd 창에서 수행해주세요.





 




1. EJS 모듈

 EJS 모듈은 템플릿 엔진 모듈입니다. 

 템플릿 엔진 모듈은 특정한 형식인 파일로부터 HTML 페이지를 생성하는 모듈을 의미합니다.


1-1. EJS 모듈의 메서드

 EJS 모듈의 메서드

 - render(str[, option]) : EJS 페이지를 HTML 페이지로 바꿉니다.



 

1
2
3
4
5
6
7
8
9
10
11
12
13
var http = require('http');
var fs = require('fs');
var ejs = require('ejs');
 
http.createServer(function (request, response) {
    // EJSPage.js File Read
    fs.readFile('EJSPage.js''utf8'function(error, data) {
        response.writeHead(200, { 'Content-Type''text/html'});
        response.end(ejs.render(data));
    });
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs




EJSPage.js

 

1
2
3
4
5
6
7
8
9
<var name = 'Yeonsu'; %>
 
<h1><%= name %></h1>
<p><%= 52 * 273 %></p>
<hr/>
 
<for (var i = 0; i < 10; i++) { %>
    <h2>The Square of <%= i %> is <%= i * i %></h2>
<% } %>
cs








변형된 소스





1-2. EJS 파일 형식

 EJS 파일의 특수 태그

 - <% CODE %> : 자바스크립트 코드를 입력합니다.

 - <%= Value %> : 데이터를 출력합니다.






1-3. 데이터 전달

 EJS 페이지에 데이터를 전달하는 방법은 굉장히 간단합니다. 

 render() 메소드의 두 번째 매개 변수에 전달하고자 하는 데이터를 입력하여 전달합니다.



 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var http = require('http');
var fs = require('fs');
var ejs = require('ejs');
 
http.createServer(function (request, response) {
    // EJSPage.js File Read
    fs.readFile('EJSPage.js''utf8'function(error, data) {
        response.writeHead(200, { 'Content-Type''text/html'});
        response.end(ejs.render(data, {
            name'Yeonsu',
            description: 'Hello EJS with Node.js... '
        }));
    });
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs



EJSPage.js

 

1
2
3
4
5
 
<h1><%= name %></h1>
<p><%= description %></p>
<hr/>
 
cs




 




2. Jade 모듈

 

2-1. Jade 모듈의 메서드

 EJS 모듈과 마찬가지로 Jade 페이지를 HTML 페이지로 부꾸어 제공하는 서버를 만들어봅니다.


 Jade 모듈의 메서드

 - Compile(str) : Jade 문자열을 HTML 문자열로 바꿀 수 있는 함수를 생성합니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
var http = require('http');
var fs = require('fs');
var jade = require('jade');
 
http.createServer(function (request, response) {
    fs.readFile('JadePage.jade''utf8'function(error, data) {
        var fn = jade.compile(data);
        
        response.writeHead(200, {'Content-Type''text/html'});
        response.end(fn());
    });
}).listen(52273function () {
    console.log('Server running at http://127.0.0.1:52273');
});
cs




2-2. HAML 파일 형식

 EJS 페이지가 HTML 페이지 위에 특수한 태그를 몇 개 추가한 것처럼 Jade 페이지는 HAML 페이지 위에 특수한 태그를 몇 개 추가합니다.

 

 JadePage.jade


 

1
2
3
4
5
6
7
8
html
    head
        title Index Page
    body
        h1 Hello HAML & Jade
        h2 Palpit
        jr
        a(href = "http://zhfldi4.blog.me", data-test = "multiple Attribute") Go To Palpit's blog
cs









코드 변형



 





 다음으로 HAML 페이지에서 div 태그를 쉽게 생성하는 법을 알아봅시다. 

 HAML에서는 CSS의 구분자 형태로 id와 class를 구분할 수 있습니다.


 

1
2
3
4
5
6
7
8
9
10
11
html
    head
        title Index Page
    body
        // Jade String
        #header
            h1 Hello HAML & Jade
            h2 Palpit
        hr
        .article
            a(href = "http://zhfldi4.blog.me", data-test = "multiple Attribute") Go To Palpit's blog
cs




 



2-3. Jade 파일 형식

 Jade 파일의 특수 태그

 - - Code : 자바스크립트 코드를 입력합니다.

 - #{Value} : 데이터를 출력합니다.

 - = Value : 데이터를 출력합니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var http = require('http');
var fs = require('fs');
var jade = require('jade');
 
http.createServer(function (request, response) {
    fs.readFile('JadePage.jade''utf8'function(error, data) {
        var fn = jade.compile(data);
        
        response.writeHead(200, {'Content-Type''text/html'});
        response.end(fn({
            name'Yeonsu',
            description: 'Hello Jade With Node.js.. !'
        }));
    });
}).listen(52273function () {
    console.log('Server running at http://127.0.0.1:52273');
});
cs



 

1
2
3
4
5
6
7
8
9
10
11
12
13
doctype html
html
    head
        title Index page
    body
        // Jade String
        h1 #{name} .. !
        h2= description
        hr
        - for (var i = 0; i < 5; i++) {
            p
                a(href = "http://zhfldi4.blog.me") Go To Yeonsu's Blog #{i}
        - }
cs

 




 





* connect 모듈은 서적과 상당히 많은 부분이 바뀌어 진행을 하지 않겠습니다.





node 강좌, nodejs 강좌, node.js


 

 

 

이 포스팅은 '모던 웹을 위한 Node.js 프로그래밍'을 참고로 작성하였습니다.



다른 카테고리의 글 목록

Web/Node.js 카테고리의 포스트를 톺아봅니다

[Node.js] 5. http 모듈 - Node.js 강좌

2015.06.12 16:39 - Palpit
조회수 확인
Chapter 5. http 모듈

 Node.js에서 가장 기본적인 웹 모듈이며 HTTP 웹 서버를 생성하는 것과 관련된 모든 기능을 담당합니다.



1. server 객체

 http 모듈에서 가장 중요한 객체는 server 객체입니다. http 모듈의 createServer() 메서드를 사용하여 server 객체를 생성 가능 합니다.


 Server 객체의 메서드

 - listen(port[, callback]) : 서버를 실행합니다.

 - close() : 서버를 종료합니다.


 Server 객체의 이벤트

 - request : 클라이언트가 요청할 때 발생하는 이벤트입니다.

 - connection : 클라이언트가 접속할 때 발생하는 이벤트입니다.

 - close : 서버가 종료될 때 발생하는 이벤트입니다.

 - checkContinue : 클라이언트가 지속적인 연결을 하고 있을 때 발생하는 이벤트입니다.

 - upgrade : 클라이언트가 HTTP 업그레이드를 요청할 때 발생하는 이벤트입니다.

 - clientError : 클라이언트에서 오류가 발생할 때 발생하는 이벤트입니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var http = require('http');
 
var server = http.createServer();
 
server.on('request'function() {
    console.log('Request on');
});
 
server.on('connection'function() {
    console.log('Connection on');
});
 
server.on('close'function() {
    console.log('Close on');
});
 
server.listen(52273);
cs










2. response 객체

 간단한 응답 메시지 작성 예제를 통해 response 객체를 알아봅시다.

 

 response 객체의 메서드

 - writeHead(statusCode, object) : 응답 헤더를 작성합니다.

 - end([data], [encoding]) : 응답 본문을 작성합니다.



 

1
2
3
4
5
6
7
// 웹서버 생성 및 실행
require('http').createServer(function (request, response) {
    response.writeHead(200, {'Content-Type''text/html' });
    response.end('<h1>Hello Web Server with Node.js !!! </h1>');
}).listen(52273function() {
    console.log('52273 port is using...');
});
cs

















2-1. File System 모듈을 사용한 HTML 페이지 제공

 자바스크립트 파일 위에서 모든 HTML 페이지를 문자열로 작성하는 것은 불가능합니다. 

 이번 절에서 File System 모듈을 사용하여 서버에 존재하는 HTML 페이지를 클라이언트에게 제공합니다.



 먼저 서버를 작성합니다.


 server.js


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 
//모듈 추출
var fs = require('fs');
 
var http = require('http');
 
http.createServer(function (request, response) {
    // HTML File Read
    fs.readFile('HTMLPage.html'function(error, data) {
        response.writeHead(200, {'Content-Type''text/html'});
        response.end(data);
    });
    
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
 
cs

 


 다음 HTMLPage.html을 작성합니다.


 

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
    <head>
        <title>Index</title>
    </head>
    <body>
        <h1>Hello Node.js</h1>
    </body>
</html>
 
cs








2-2. 이미지와 음악 파일 제공

 이번 절에서는 이미지와 음악을 같은 경로 내에 넣어주세요


 server.js를 작성합니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
//모듈 추출
var fs = require('fs');
var http = require('http');
 
http.createServer(function (request, response) {
    // Image File Read
    fs.readFile('eva.jpeg'function(error, data) {
        response.writeHead(200, {'Content-Type''image/jpeg'});
        response.end(data);
    });
    
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
 
});
 
 
http.createServer(function (request, response) {
    // Music File Read
    fs.readFile('Sam Smith.mp3'function(error, data) {
        response.writeHead(200, {'Content-Type''audio/mp3'});
        response.end(data);
    });
    
}).listen(52274function() {
    console.log('Server running at http://127.0.0.1:52274');
});
cs

 










 

 


 MIME 형식

 - text/plain

 - text/html

 - text/css

 - text/xml

 - image/jpeg

 - image/png

 - video/mpeg

 - audio/mp3









2.3 쿠키 생성

 쿠키는 키와 값이 들어 있는 작은 데이터 조각으로, 이름, 값, 파기 날짜와 경로 정보를 가지고 있습니다. 

 쿠키는 서버와 클라이언트에서 모두 저장하고 사용할 수 있습니다. 쿠키는 일정 기간 동안 데이터를 저장할 수 있으므로 일정 기간 동안 로그인을 유지하는 데 사용됩니다.


 response 객체를 사용하면 클라이언트에게 쿠키를 할당할 수 있습니다. 

 쿠키를 할당할 때 응답 헤더의 Set-Cookie 속성을 사용합니다. Set-Cookie 속성에는 쿠키의 배열을 넣습니다.


 ex)

  Name = Value; Expires = Date; Domain = domain; Path = path; Secure




 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var http = require('http');
 
http.createServer(function (request, response) {
    var date = new Date();
    date.setDate(date.getDate() + 7);
    
    response.writeHead(200, {
        'Content-Type''text/html',
        'Set-Cookie': [
            'breakfast = toast; Expires = ' + date.toUTCString(),
            'dinner = chicken'
        ]
    });
    
    response.end('<h1>' + request.headers.cookie + ' </h1>');
}).listen(52273function () {
    console.log('Server running at http://127.0.0.1:52273');
});
cs












2.4 페이지 강제 이동

 


 

1
2
3
4
5
6
7
8
var http = require('http');
 
http.createServer(function (request, response) {
    response.writeHead(302, { 'Location''http://www.naver.com'});
    response.end();
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs







 





3. request 객체

 Server 객체의 request 이벤트가 발생할 때 이벤트 핸들러의 첫 번째 매개 변수에 request 객체가 들어갑니다.


 request 객체의 속성

 - method : 클라이언트 요청 방식을 나타냅니다.

 - url : 클라이언트가 요청한 URL을 나타냅니다.

 - headers : 요청 메시지 헤더를 나타냅니다.

 - trailers : 요청 메시지 트레일러를 나타냅니다.

 - httpVersion : HTTP 프로토콜 버전을 나타냅니다.


3.1 url 속성을사용한 페이지 구분

 요청 메시지의 URL에 따라 서로 다른 웹 페이지를 제공하는 예제를 만들어봅시다.

 - app.js

 - Index.html

 - OtherPage.html


 Index.html

 

1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
    <head>
        <title>Index</title>
    </head>
    <body>
        <h1>Hello Node.js - Index Page</h1>
    </body>
</html>
cs



 OtherPage.html

 

1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
<html>
    <head>
        <title>OtherPage</title>
    </head>
    <body>
        <h1>Hello Node.js - OtherPage Page</h1>
    </body>
</html>
cs



 app.js

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var http = require('http');
var fs = require('fs');
var url = require('url');
 
http.createServer( function (request, response) {
    var pathName = url.parse(request.url).pathname;
    
    if (pathName == '/') {
        fs.readFile('Index.html'function(error, data) {
            response.writeHead(200, {'Content-Type''text/html'});
            response.end(data);
        });
    } else if (pathName == '/OtherPage') {
        fs.readFile('OtherPage.html'function(error, data) {
            response.writeHead(200, {'Content-Type''text/html'});
            response.end(data);
        });
    }
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs



Index.html 접근시





OtherPage.html 접근시


 



3.2 method 속성을 사용한 페이지 구분

 request 객체의 method 속성을 이용하여 요청 방식에 따라 페이지를 쉽게 구분할 수 있습니다.


 

1
2
3
4
5
6
7
8
9
10
11
var http = require('http');
 
http.createServer(function (request, response) {
    if (request.method == 'GET') {
        console.log('GET request');
    } else if(request.method == 'POST') {
        console.log('POST request');
    }
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs




 




3. 3 GET & POST 요청 매개 변수 추출

 GET 요청과 POST 요청에서 매개 변수를 처리하는 방법을 살펴보겠습니다.


 

1
2
3
4
5
6
7
8
9
10
11
var http = require('http');
var url = require('url');
 
http.createServer(function (request, response) {
    var query = url.parse(request.url, true).query;
    
    response.writeHead(200, {'Content-Type''text/html'});
    response.end('<h1>' + JSON.stringify(query) + '</h1>');
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs


 위와 같이 작성하고 http://127.0.0.1:52273?name=Yeonsu&region=Seoul 로 접속합니다.




 






다음은 POST 방식인데, GET 방식보다 데이터를 더 많이 담을 수 있고 보안 측면에서도 좋습니다.



HTMLPage.html

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html>
    <head>
        <title>Node.js Example</title>
    </head>
    <body>
        <h1>Send Data With POST Method</h1>
        <form method="POST">
            <table>
                <tr>
                    <td><label>Data A</label></td>
                    <td><input type="text" name="data_a"/></td>
                </tr>
                    <td><label>Data B</label></td>
                    <td><input type="text" name="data_b"/></td>
            </table>
            <input type="submit"/>
        </form>
    </body>
</html>
cs




 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var http = require('http');
var fs = require('fs');
 
http.createServer(function (request, response) {
    if (request.method == 'GET') {
        fs.readFile('HTMLPage.html'function (error, data) {
            response.writeHead(200, {'Content-Type''text/html'});
            response.end(data);
        });
    } else if (request.method == 'POST') {
        request.on('data'function(data) {
            response.writeHead(200, {'Content-Type''text/html'});
            response.end('<h1>' + data + '</h1>');
        });
    }
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs








 





3. 4 쿠키 추출

 response 객체를 다루면서 쿠키를 생성하는 방법을 배웠습니다.

 이 절에서는 request 객체를 사용하여 쿠키를 추출하는 방법을 배워보겠습니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var http = require('http');
 
http.createServer(function (request, response) {
    var cookie = request.headers.cookie;
    cookie = cookie.split(';').map(function (element) {
        var element = element.split('=');
        return {
            key: element[0],
            value: element[1]
        };
    });
    
    response.writeHead(200, {
        'Content-Type''text/html',
        'Set-Cookie': ['name = Yeonsu''region = Seoul']
    });
    
    response.end('<h1>' + JSON.stringify(cookie) + '</h1>');
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273');
});
cs

 




 



node 강좌, nodejs 강좌, node.js


 

 



 

이 포스팅은 '모던 웹을 위한 Node.js 프로그래밍'을 참고로 작성하였습니다.


다른 카테고리의 글 목록

Web/Node.js 카테고리의 포스트를 톺아봅니다

[Node.js] 4. 이벤트 - Node.js 강좌

2015.06.12 16:35 - Palpit
조회수 확인
4. 이벤트

 Node.js는 이벤트 기반 비동기 프로그래밍입니다. 



1. 이벤트 연결

 이벤트 연결에 관한 예제를 살펴봅시다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 종료 이벤트 연결
process.on('exit'function() {
    console.log('Goodbye');
});
 
// 예외처리 이벤트 연결
process.on('uncaughtException'function(error) {
    console.log('Exception occur');
});
 
var count = 0;
var id = setInterval(function() {
    count++;
    
    // 3번 실행하면 타이머 중지
    if (count == 3) {
        clearInterval(id);
    }
    
    // 강제로 예외 발생
    error.error.error();
}, 2000);
cs









2. 이벤트 연결 개수 제한

 Node.js는 이벤트가 10개가 넘는 이벤트 핸들러를 연결한 경우 오류로 간주합니다.


 이벤트 연결 개수 제한 메서드

 - setMaxListeners(limit) : 이벤트 핸들러 연결 개수를 limit 만큼 조절합니다.




3. 이벤트 제거

 이벤트 제거 메서드

 - removeListener(eventName, handler) : 특정 이벤트의 이벤트 핸들러를 제거합니다.

 - removeAllListener([eventName]) : 모든 이벤트 핸들러를 제거합니다.


 이벤트 연결 메서드

 - once(eventName, eventHandler) : 이벤트 핸들러를 한 번만 연결합니다.



 

1
2
3
4
5
6
7
process.once('uncaughtException'function(error) {
    console.log('예외 발생');
});
 
setInterval(function () {
    error.error.error('^ ^');
}, 3000);
cs








 







4. 이벤트 강제 발생

 이벤트 강제 발생

 - emit(event, [arg1], [arg2], [...]) : 이벤트를 실행합니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
// 종료 이벤트 연결
process.on('exit'function() {
    console.log('Goodbye');
});
 
// 이벤트 강제 발생
process.emit('exit');
process.emit('exit');
process.emit('exit');
process.emit('exit');
 
console.log('프로그램 실행 중');
cs



보시는 바와 같이 종료 이벤트를 강제 발생시키지만 종료를 시키는 것은 아닙니다. 연결된 이벤트 핸들러만 강제로 발생시키는 것입니다!




 






5. 이벤트 생성

 Node.js에서 이벤트를 연결할 수 있는 모든 객체는 EventEmitter 객체의 상속을 받습니다.

 EventEmitter 객체는 process 객체 안에 있는 생성자 함수로 생성할 수 있는 객체입니다.


 EventEmitter 객체의 메서드

 - addEventListener(eventName, eventHandler) : 이벤트를 연결

 - on(eventName, eventHandler) : 이벤트를 연결

 - setMaxListeners(limit) : 이벤트 연결 개수를 limit만큼 조절

 - removeListener(eventName, eventHandler) : 특정 이벤트의 이벤트 핸들러를 제거

 - removeAllListener([eventName]) : 모든 이벤트 핸들러를 제거

 - once(eventName, eventHandler) : 이벤트를 한 번만 연결



 

1
2
3
4
5
6
7
8
// EventEmitter 객체 생성
var custom = new process.EventEmitter();
 
custom.on('tick'function() {
    console.log('이벤트 실행');
});
 
custom.emit('tick');
cs




 


 

EventEmitter는 이벤트 생성부분 모듈로 나누어 사용됩니다. 


아래 예제를 통해 두 js 파일로 구성된 예제를 살펴봅시다.



rint.js

 

1
2
3
4
5
6
// EventEmitter 객체 생성
exports.timer = new process.EventEmitter();
 
setInterval(function() {
    exports.timer.emit('tick');
}, 2000);
cs




app.js

 

1
2
3
4
5
6
// 모듈 추출
var rint = require('./rint');
 
rint.timer.on('tick'function() {
    console.log('이벤트 실행');
});
cs





 



node 강좌, nodejs 강좌, node.js


이 포스팅은 '모던 웹을 위한 Node.js 프로그래밍'을 참고로 작성하였습니다.



다른 카테고리의 글 목록

Web/Node.js 카테고리의 포스트를 톺아봅니다
조회수 확인
Chapter 3. 기본 내장 모듈

 Node.js는 다양한 모듈을 지원합니다.

 


위 링크를 통해 Node.js 문서를 참고하실 수 있습니다.





1. os 모듈

 가장 먼저 os 모듈에 대해 살펴보도록 하겠습니다.


 os 모듈의 메서드

 - hostname()  

 - type()  

 - platform()  

 - arch()

 - release()

 - uptime()

 - loadavg()

 - totalmem()

 - freemem()

 - cpus()

 - getNetworkInterfaces()


 아래 예제를 통해 직접 메소드의 역할을 살펴봅시다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// os 모듈 추출
var os = require('os');
 
console.log('hostname: ' + os.hostname());
console.log('type: ' + os.type());
console.log('platform: ' + os.platform());
console.log('arch: ' + os.arch());
console.log('release : ' + os.release());
console.log('uptime: ' + os.uptime());
console.log('totalmem: ' + os.totalmem());
console.log('freemem: ' + os.freemem());
console.log('cpus: ' + os.cpus());
console.log('getNetworkInterfaces: ' + os.getNetworkInterfaces());
 
 
cs







 




2. url 모듈

 

 url 모듈의 메서드

 - parse(urlStr, [, parseQueryString = false, slashesDenoteHost = false]) : URL 문자열을 URL 객체로 변환해 리턴합니다.

 - format(urlObj) : URL 객체를 URL 문자열로 변환해 리턴합니다.

 - resolve(from, to) : 매개 변수를 조합하여 완전한 URL 문자열을  생성하여 리턴합니다.



 

1
2
3
4
5
 
var url = require('url');
 
var parsedObj = url.parse('http://www.naver.com');
console.log(parsedObj);
cs




 





3. Query String 모듈

 URL 객체의 쿼리와 관련된 모듈


 Query String 모듈의 메서드

 - stringify(obj[, sep = '&', eq = '=']) : 쿼리 객체를 쿼리 문자열로 변환하여 리턴합니다.

 - parse(str[, sep = '&', eq = '=']) : 쿼리 문자열을 쿼리 객체로 변환해 리턴합니다.



 

1
2
3
4
5
var url = require('url');
var queryString = require('querystring');
 
console.log(queryString.parse(parsedObj.query));
cs




 



4. util 모듈

 Node.js의 보조적인 기능을 모아둔 모듈입니다.


 util 모듈의 메서드

 - format() : 매개 변수로 입력한 문자열을 조합하여 리턴합니다.


 

1
2
3
4
var util = require('util');
 
var data = util.format('%d + %d = %d'5227352 + 273);
console.log(data);
cs





 





5. File System 모듈

 File System 모듈의 메서드

 - readFile(file, encoding, callback) : 파일을 비동기적으로 읽습니다.

 - readFileSync(file, encoding) : 파일을 동기적으로 읽습니다.

 - writeFile(file, data, encoding, callback) : 파일을 비동기적으로 씁니다.

 - writeFileSync(file, data, encoding) : 파일을 동기적으로 씁니다.










 document.txt를 생성한 뒤, 텍스트 파일을 읽어오는 예제를 작성해 보도록 하겠습니다.


 

 

1
2
3
4
var fs = require('fs');
 
var text = fs.readFileSync('document.txt''utf8');
console.log(text);
cs





 




 이번엔 readFile() 메서드를 통해 읽어봅시다.


 

1
2
3
4
5
6
var fs = require('fs');
 
fs.readFile('document.txt''utf8'function(error, data) {
    console.log(data);
});
 
cs




 





 다음으로 파일쓰기 예제를 봅시다.


 

1
2
3
4
5
6
7
8
 
var fs = require('fs');
 
var data = 'Input Text!!';
 
fs.writeFile('document.txt', data, 'utf8'function (error) {
    console.log('WRITE FILE ASYNC COMPLETE');
});
cs

 


 

 







 





 파일을 읽고 쓰는데 예외처리에 대해 알아보도록 하겠습니다.


 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var fs = require('fs');
 
try { 
    var data = fs.readFileSync('document.txt''utf8');
    console.log(data);
catch(e) {
    console.log(e);
}
 
try { 
    fs.writeFileSync('document.txt''Palpit''utf8');
    console.log('FILE WRITE COMPLETE');
catch(e) {
    console.log(e);
}
cs



 



node 강좌, nodejs 강좌, node.js


이 포스팅은 '모던 웹을 위한 Node.js 프로그래밍'을 참고로 작성하였습니다.

다른 카테고리의 글 목록

Web/Node.js 카테고리의 포스트를 톺아봅니다
조회수 확인
Chapter 2. Node.js의 전역 객체


1. 전역변수
 웹 브라우저에서 동작하는 자바스크립트 최상위 객체는 window 객체입니다. 
 
 but, Node.js는 웹 브라우저에서 동작하는 것이 아니므로 window객체가 존재하지 않습니다!!
 => 전역 변수전역 함수를 갖는 형태.

 문자열 자료형의 전역변수인 __filename__dirname이 있습니다.

 두 개의 변수는 변수 명으로도 눈치채셨으리라 생각됩니다.

 콘솔을 통해 확인해보도록 하겠습니다.

 아래 소스 코드를 node.global.js에 저장합니다.

 

1
2
console.log('filename: ', __filename);
console.log('dirname: ', __dirname);
cs






 




 파일이 있는 경로와 파일 명을 __filename을 통해,
 파일이 속해있는 디렉토리의 경로를 __dirname을 통해 알 수 있습니다.






2. console 객체

 console 객체의 메서드
 - log() : 출력을 하는데 사용합니다.
 - time(label) : 시간 측정을 시작하는데 사용합니다.
 - timeEnd(label) : 시간 측정을 종료하는데 사용합니다.


 console.log() 메서드는 C 기반의 방식으로도 출력이 가능합니다.





 아래 예제를 통해 직접 확인해 봅시다.


 

1
2
3
console.log('Number : %d + %d = %d'27352273 + 52);
console.log('String : %s''Hello World!''특수 기호 상관 없음!');
console.log('JSON : %j', {name'YeonsuMoon'});
cs

 



 






 다음은 time 메소드를 사용하는 법을 보도록 하겠습니다.



 

1
2
3
4
5
6
7
8
9
10
11
12
// 시간 측정
console.time('alpha');
 
var output = 1;
for (var i = 0; i <= 7; i++) {
    output *= i;
}
 
console.log('Result: ', output);
 
// 시간 측정 종료
console.timeEnd('alpha');
cs




 








3. process 객체
 - 프로그램과 관련된 정보를 나타내는 객체입니다.
 - 웹 브라우저에서 작동하는 자바스크립트에 존재하지 않는 Node.js만이 가진 객체입니다.

 Property
  - argv : 실행 매개 변수를 나타냅니다.
  - env : 컴퓨터 환경과 관련된 정보를 나타냅니다.
  - version : Node.js 버전을 나타냅니다.
  - versions : Node.js와 종속된 프로그램 버전을 나타냅니다.
  - arch : 프로세서의 아키텍처를 나타냅니다.
  - platform : 플랫폼을 나타냅니다.

 Method
  - exit([exitCode = 0]) : 프로그램을 종료합니다. (매개변수 생략가능)
  - memoryUsage() : 메모리 사용 정보 객체를 리턴합니다.
  - uptime() : 현재 프로그램이 실행된 시간을 리턴합니다.



 예제를 통해 살펴보도록 하겠습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// process.argv
process.argv.forEach(function (item, index) {
    console.log(index + ' : ' + typeof(item) + ' : ', item);
    
    // 실행 매개 변수에 --exit가 있을 때
    if (item == '--exit') {
        // 다음 실행 매개 변수를 얻습니다.
        var exitTime = Number(process.argv[index + 1]);
 
        // 일정 시간 후 프로그램을 종료합니다.
        setTimeout(function() {
            process.exit();
        }, exitTime);
    }
});
cs



 매개 변수를 출력하고 exitTime 만큼(10초) 머물다가 종료됩니다.




 







4. exports 객체와 모듈
 Node.js는 모듈을 사용하여 기능을 확장합니다. 이번 절에서 모듈을 생성하는 법을 보도록 하겠습니다.

 먼저 module.js를 작성합니다.


 

1
2
3
4
5
6
7
8
9
10
11
12
13
// 절대값 구하는 메서드
exports.abs = function (number) {
    if (0 < number) {
        return number;
    } else {
        return -number;
    }
};
 
// 원의 넓이를 구하는 메서드
exports.circleArea = function (radius) {
    return radius * radius * Math.PI;
};
cs




 다음, main.js를 작성하여 추출합니다.



 

1
2
3
4
var module = require('./module.js');
 
console.log('abs(-273) = %d', module.abs(-273));
console.log('circleArea(3) = %d', module.circleArea(3));
cs

 




 






 모듈을 생성할 때 exports 객체를 사용하고 추출할 때는 require()를 사용합니다!!!!




* 이 포스팅은 '모던 웹을 위한 Node.js 프로그래밍'을 참고로 작성하였습니다.


다른 카테고리의 글 목록

Web/Node.js 카테고리의 포스트를 톺아봅니다
조회수 확인
Chapter 1. Node.js 설치 및 애플리케이션 구동




1. Node.js 개발 환경 구축


nodejs.org에 접속하여 해당 PC에 맞게 다운받아서 Next를 눌러서 설치하면 됩니다.






 






2. 명령 프롬프트(cmd)를 실행시켜 node를 입력합니다.


문제없이 설치되었다면 아래와 같이 나옵니다.



 







3. 간단한 콘솔 로그를 찍어보겠습니다.



 

1
2
console.log('Hello World.. !');
 
cs



아래와 같이 Hello World.. ! 가 출력되는 것을 확인 할 수 있습니다.





 







4. node.basic.js 파일을 작성하여 애플리케이션을 구동해봅시다!



 

1
2
console.log('Hello World.. !');
 
cs


node.basic.js 파일에 위와 같이 코드를 입력한 뒤 저장합니다.




접근하기 편한 폴더에 저장하여 node를 통해 실행시켜 봅니다.


실행법:


 node node.basic.js (js 생략가능)




 





5. 두 번째 Node.js 애플리케이션



간단한 웹 서버를 Node.js를 통해 만들겠습니다.


아래 코드로 node.server.js 파일을 작성합니다.



 

1
2
3
4
5
6
7
8
9
10
11
 
// Extract Module
var http = require('http');
 
// Create & excute Web Server
http.createServer(function (request, response) {
    response.writeHead(200, { 'Content-Type''text/html' });
    response.end('<h1> Hello World ! </h1>');
}).listen(52273function() {
    console.log('Server running at http://127.0.0.1:52273/');
});
cs




작성된 코드를 실행시킵니다.










콘솔에서 서버가 구동되고 있는 문구가 나오고.







http://localhost:52273 혹은 http://127.0.0.1:52273 을 통해 접속가능합니다.



이 포스팅은 '모던 웹을 위한 Node.js 프로그래밍'을 참고로 작성하였습니다. 


다른 카테고리의 글 목록

Web/Node.js 카테고리의 포스트를 톺아봅니다