White Whale Studio

[Node.js] 모듈 만들어 보기 본문

IT Engineering/MEAN Stack

[Node.js] 모듈 만들어 보기

glorymind 2018. 8. 30. 10:05
반응형

이번에는 간단하게 현재 일시를 반환하는 모듈을 만들어서 이전 포스팅에서 만든 내용에 추가적으로 더해봅시다.


1
2
3
4
5
6
7
var http = require('http');
 
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type''text/html'});
    res.end('Hello World!');
}).listen(8989);
 
cs


이전 소스에서 require는 모듈을 include할 때 쓴다고 말씀드렸습니다.

이번에는 직접 만들어서 추가할 예정입니다.

우선 dateModule.js라고 파일을 하나 만들고 다음과 같이 타이핑합니다.


1
2
3
4
exports.myDateTime = function () {
    return Date();
};
 
cs

여기서 exports 키워드는 프로퍼티를 생성하고 메서드를 외부에서 사용할수 있도록 해줍니다.


1
2
3
4
5
6
7
8
9
var http = require('http');
var date = require('./dateModule.js');
 
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type''text/html'});    
    res.write("The date and time are currently: " + date.myDateTime());
    res.end('Hello World!');
}).listen(8989);
 
cs

그리고 원래있던 myfirst.js를 위와 같이 수정합니다.

var date = require('./dateModule.js'); 를 사용해서 방금 만든 외부 모듈을 포함시키고

res.write("The date and time are currently: " + date.myDateTime()); 의 마지막 부분에서 해당 function을 호출합니다.

커맨드 창에서 node myfirst.js를 쳐서 웹페이지에서 확인해보까요


어랏.. 실행해보니 시간은 나오는데 뭔가 이상합니다.

인터넷 익스플로러에서는 정상적으로 다음과같이 나오는데

크롬 브라우저에서는 깨집니다! 이런..

한글이 깨질때는 역시 Encoding 문제겠지요.. 브라우저에서 찰떡같이 해주면 좋겠지만 안되는 경우가 많기 때문에

인코딩 옵션을 추가해줍니다.

1
2
3
4
5
6
7
8
9
var http = require('http');
var date = require('./dateModule.js');
 
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type''text/html; charset=utf-8'});    
    res.write("The date and time are currently: " + date.myDateTime());
    res.end('Hello World!');
}).listen(8989);
 
cs

res.writeHead(200, {'Content-Type''text/html; charset=utf-8'});  의 마지막줄에 charset=utf-8을 추가하여

한글이 깨지지 않도록 처리해준 후 실행해보면 크롬도 인터넷 익스플로러 처럼 정상적으로 나옵니다.



반응형

'IT Engineering > MEAN Stack' 카테고리의 다른 글

[Node.js] NPM : Node Package Manager  (0) 2018.08.30
[Node.js] URL Module  (0) 2018.08.30
[Node.js] File System Module  (0) 2018.08.30
[Node.js] Start!  (0) 2018.08.30
MEAN Stack 시작  (0) 2018.08.30
Comments