이 문서는 node.js 를 아주 빠르게 터득하고 실험해보기 위해서 만들어졌다.


본 내용은 'Node.js 프로그래밍 (저자: 변정훈, 출판사:에이콘)'  서적을 이용하여 작성되었다. 극히 일부분만 인용하였으며, 꼭 책을 사서 보기 바란다.


이 후, Node.js 로 트위터봇 만들기 글과 함께 하면 감이 올테다.


Node.js 의 특징


Node.js 를 사용하고 싶은 욕구가 들게 할만한 주요 특징은 다음과 같다.

문법 언어로 자바스크립트를 사용한다. (구글 V8 엔진을 문법 파서 엔진으로 사용한다. )

모든 API 는 이벤트 지향 비동기 API 이다. (심지어 IO도)

비동기 처리 특성에 의한 동시 접속 처리 능력이 월등히 뛰어나다.

오픈소스로써, 모듈에 대한 커뮤니티가 활성화가 잘 되어있다.


인스톨


http://nodejs.org/#download 에서 다운로드하여 설치한다.

윈도우 버젼은 0.6.1 버젼부터 지원한다.

터미널에서 'node --version' 을 실행해서 노드 버젼이 출력되면 성공적으로 설치된 것이다.



노드 명령을 찾을 수 없을 경우


node 명령을 찾을 수 없을 경우 환경변수 'PATH' 에 다음 위치를 추가한다.


디폴트로 32bit 환경일 경우에는C:\Program Files\nodejs

으로 64bit 환경일 경우에는 C:\Program Files (x86)\nodejs


require & module.exports


node.js 에서는 js 파일 하나가 하나의 모듈이 된다.

각각의 모듈은 기본적으로 외부에서 접근할 수 없으나, module.exports 를 통해 외부에 오픈할 변수나 함수를 정의할 수 있다.

반대로 require 는 다른 외부 모듈(js) 를 가져올 수 있으며, 해당 모듈에서 module.exports 로 정의한 변수나 함수를 사용할 수 있다.


// user_module.js

var something = module.exports = {};


// demo.js

var usermodule = require('./user_module');

 


노드는 다음과 같은 기본 모듈(노드 설치에 포함된 모듈)을 가진다. (추가로 설치해서 사용하는 모듈은 확장 모듈이라한다.)



 모듈명 설명 
 Process  프로세스에 대한 정보를 담고 잇는 전역 객체다.
 Utilities  타입 검사, 포맷팅 등의 유틸리티 함수를 제공한다.
 Events  이벤트 관련 함수를 제공한다.
 Buffers  바이너리 데이터의 옥텟 스트림(octet stream)을 다루는 모듈이다.
 Streams  스트림을 다루기 위한 추상 인터페이스다.
 Crypto  암호화에 대한 함수를 제공한다.
 TLS/SSL  공개키/개인키 기반인 TLS/SSL 에 대한 함수를 제공한다.
 File System  파일을 다루는 함수를 제공한다.
 Path  파일의 경로를 다루는 함수를 제공한다.
 Net 비동기 네트워크 통신 기능을 제공한다.
 UDP/Datagram Sockets UDP의 데이터그램 소켓(Datagram Socket) 통신 기능을 제공한다.
 DNS 도메인 네임 서버를 다루는 함수를 제공한다.
 HTTP HTTP 서버와 클라이언트 기능을 제공한다.
 HTTPS HTTPS 서버와 클라이언트 기능을 제공한다.
 URL URL을 다루는 함수를 제공한다.
 Query Strings URL의 쿼리 문자열을 다루는 함수를 제공한다.
 Readline 스트림에서 라인 단위로 읽는 기능을 제공한다.
 Vm 자바스크립트를 실행하는 기능을 제공한다.
 Child Processes 자식 프로세스 생성과 관련된함수를 제공한다.
 Assert 유닛 테스트를 위한 단언문을 제공한다.
 TTY 터미널이나 콘솔 관련 기능을 제공한다.
 Zlib zlib 압축 함수를 제공한다.
 OS 운영체제에 대한 정보를 제공하는 함수를 제공한다.
 Cluster 여러 노드 프로세스를 실행하는 클러스터 기능을 제공한다.



Web Server 예제


// webserver.js

var server = require('http');

server.createServer(function(req, res) {

    res.writehead(200, {'Content-Type':'text/plain'});

    res.end('Hello World\n');

}).listen(3000, 'localhost');

console.log("server stated at http://localhost:3000");


node js 실행


node.js 실행은 간단하다. node 명령어 뒤에 js 파일명을 입력한다. (.js 는 제외)

>node webserver


npm


npm 은 노드를 위한 패키지 매니저다. 노드를 이용하여 확장 모듈을 만들 경우, 확장모듈을 관리 해준다. Java 에서의 Maven 의 역할과 비슷하다. 

Maven 의 Central Repository 와 같이, npm 도 중앙 저장소가 존재한다.


NPM Registry : http://search.npmjs.org


수많은 개발자가 위 리파지터리로 모듈을 등록하고 있으며, 우리는 그저 괜찮은거 가져다 쓰면 된다.

npm 으로 설치는 글로벌 설치와 로컬 설치가 있다. 


  • 글로벌 설치 : 확장 모듈 중 커맨드라인에서 유틸리티 도구처럼 사용할 수 잇는 모듈이다. 설치시 '-g' 옵션을 부여한다.
  • 로컬 설치 : 소스에서 사용해야하는 확장 모듈이 경우 사용한다. 로컬에 설치되는 확장 모듈은 애플리케이션 소스코드와 의존성이 있기 때문에 애플리케이션과 함께 관리되어야한다. 

로컬 인스톨 예제)




글로벌 설치 예제)



  1. 곰발가락 2012.08.14 01:28

    작년에 잘 쓸줄도 모르는 리눅스에서 끙끙거리며 익혔던 생각이 나네요 ㅠ

    • BlogIcon slothink 편현장 2012.08.16 14:05 신고

      아, 당시에는 윈도우용이 없었죠? ^^
      고생하셨습니다. ㅎㅎ 하지만 얼리답게 남다른 진도가 나가셨겠네요. 부럽

  2. BlogIcon 돼지왕왕돼지 2012.09.18 16:08

    3분만에 좋은 정보 잘 배워 갑니다. 감사합니다~ ^ ^

  3. saai 2014.05.24 20:12

    LG U+ 만 됨 ㅜㅜ

  4. BlogIcon 곰팔가락 2017.01.30 06:56

    작년에 잘 쓸줄도 모르는 리눅스에서 끙끙거이며 익혔던 생각이 나네요 ㅠ

    • 편현장 편현장 2017.01.30 06:57

      아, 당신에는 윈도우용이 없었죠? ^^
      고생하셨습니다. ㅎㅎ 하지만 얼리답게 남다른 진도가 나가셨겠네요.부럽

+ Recent posts