티스토리 뷰

안녕하세요. MIN-IT입니다.


이번시간은 Node.js의 첫 번째 강의로 Node.js의 개념과 설치를 진행해 보겠습니다.


퍼가실 때 댓글을 남겨주세요!

http://min-it.tistory.com







Node.js의 특징으로는


1. 비동기식 입출력

2. 이벤트 기반 입출력

3. 노드 모듈

이 있습니다.


각각의 의미는 다음과 같습니다.





*비동기식 입출력


1)비동기식 입출력과 동기식 입출력의 차이점은?


동기식 입출력(블로킹, Blocking IO)이란 어떤 프로그램를 실행한 뒤 결과가 나올 때까지 다른 작업을 진행하지 않고 대기하는 것으로, 실행 후 결과가 나오고 난 뒤 다른 작업을 진행할 수가 있습니다.

==> 프로그램이 실행하는 동안 중간중간의 대기시간이 있어 속도가 느려진다는 단점


비동기식 입출력은 동기식 입출력과 반대로 어떤 프로그램을 실행한 뒤 결과가 나올 때까지 기다리지 않고 다른 작업을 진행할 수 있습니다.



예를 들어 A,B,C라는 사람이 은행업무(업무1/업무2/업무3)를 하러 왔다고 가정하겠습니다.


동기식일 경우 접수-업무1-업무2-업무3을 순차적으로 처리하기 때문에 A라는 사람이 먼저 접수하고 일을 진행하게된다면 A의 은행업무를 다 처리 할 동안, B와C는 자기 번호가 호출 될 때까지 기다려야합니다.


그에 반해, 비동기식일 경우 A가 업무1을 처리하는 동안 각각 B,C는 업무2/업무3을 처리할 수 있습니다. 또, A는 업무1을 진행하는 동안 업무2/업무3을 진행할 수 있습니다.


(잠시 생각해본다면 비동기식으로 처리할 때 주의할점이 있다는 것을 느낄 수 있습니다. 순차적으로 처리해야 할 경우 비동기식으로 할 경우 예상치 못한 오류를 범할 수 있습니다.


예를 들어 A를 끝나고나서 A의 결과값을 가지고 B를 실행해야하는 경우에 비동기식으로 처리 했을 경우 A가 끝나기도 전에 B를 실행하기 때문에 정확한 A의 결과값을 가지고 B를 실행한 것이 아니기 때문에 오류 및 에러가 발생할 수 있습니다^^)



이런한 비동기식 입출력은 실행결과를 보기도 전에 다른 작업을 진행할 수 있는 이유는 콜백 함수(Callback)가 호출 됩니다.


콜백함수의 역할은 어떤 작업을 할 때 그 작업이 끝나는 시점에 호출되는 함수입니다.


비동기식인 경우, 작업의 결과를 보기도 전에 다른 작업을 실행시키기 때문에 대기시간이 없으며, 각각의 작업이 마치는 시점에 자동적으로 콜백함수를 호출을 시키기 때문에 콜백함수를 가지고 결과를 처리하는 특징을 가지고 있습니다.



*동기식

var fileRead = file.read('indec.txt');
readShow(fileRead);
var start = doStart('a','b');

readShow(fileRead)가 실행된 후 doStart('a','b')가 실행된다.


*비 동기식

file.read('index.txt', function Callback(contents) {
readShow(contents);
})

var start = doStart('a','b');

doStart('a','b')가 먼저실행 될 수도 있다.

즉, readShow(fileRead)를 먼저 실행했다 하더라도

doStart('a','b')가 먼저 끝났다면 doStart('a','b')의 결과 값이 나온후 readShow(contents)의 값이 나온다.


(비동기식은 작업이 끝나는 시점에 콜백 함수를 호출한다.

먼저 실행된 함수의 결과 값이 첫번 째로 나오는 것이아니라 그 함수가

끝나는 시점에 나오는 것으로 나중에 실행된 함수의 결과가 먼저 나올 수 있다.)




*크롬의 V8 엔진


- Nodejs의 또 다른 특징으로는 이벤트 기반의 입출력입니다.


Node.js는 이름만 봐도 js , 즉 자바스크립트 기반입니다.

자바스크립트는 코드를 한 줄 한 줄 해석하는 방식인 인터프리터 방식을 사용하므로

자바스크립트 자체적으로도 속도가 느린 문제를 가지고 있습니다.

하지만, 크롬의 V8자바스크립트 엔진이 나오면서 해결 되었는데, V8엔진은 자바스크립트 코드를 네이티브 코드로 바꾼 후 실행시키는 기능이 있습니다.

Node.js는 크롬의 V8엔진을 이용해 자바스크립트 코드를 빠르게 실행할 수 있습니다.





*이벤트 기반의 입출력


- Node.js는 V8 엔진을 이용하며, V8 엔진에는 필요한 기능을 병렬적으로 실행하는 '스레드 풀'과 '이벤트를 받아 처리하는 이벤트 루프'등의 기본 기능이 있습니다.


Node.js는 이벤트를 받아 처리하는 기능을 가지고 있습니다.

Jquery를 예로 든다면, 버튼 클릭 시 발생하는 함수를 정의하거나, 마우스 오버시, 해당하는 div태그 밖으로 나갈 시의 어떤 함수를 호출 하는 것처럼 Node.js도 어떤 이벤트가 발생했을 경우 해당하는 함수를 호출 시킬 수도 있으며 이미 정의된 이벤트들을 처리 할 수도 있습니다.




*노드의 모듈


- 노드의 모듈은 자바로 따진다면 라이브러리 같은 기능을 하는 것입니다.

  모듈의 형태는 CommonJs 표준 스펙을 따릅니다.

  모듈의 경우는 학습을 하면서 많이 사용하기 때문에 하면서 이해하실 수 있습니다.



모듈을 사용하기위해서는 require라는 것을 사용합니다.


var module1 = require('module');


mouduel이라는 모듈을 사용하기위해서 require를 사용했고 module1이라는 변수에 넣었습니다.

module1은 module안의 정의된 기능들을 사용할 수 있습니다.

(require로 불러드린 모듈/파일들은 자바스크립트 객체로 인식이되면서 그 기능들을 사용 할 수 있습니다.)


자바로 따진다면 User User1 = new User() 처럼 인스턴스하여 User클래스 안의 메소드들을 사용할 수 있는 원리입니다.

(User1.name(); User1.toString() ....)





*노드 설치


1. 자바를 설치한다. (JAVA SE)

-노드를 실행하기위해서는 자바가 설치되어야 합니다.


http://www.oracle.com/technetwork/java/javase/downloads/index.html





1. JDK 버튼클릭


2.Accept License Agreement(동의)버튼 클릭 후

컴퓨터의 OS 맞는 프로그램 다운로드 후 설치






2. 비쥬얼 스튜디오 / 웹 스톱(학생일 경우 1년 무료) / 서브바인 텍스트3 중에 설치합니다.

- 툴을 사용하여 노드JS 코딩을 해봅시다.


https://code.visualstudio.com/



https://www.jetbrains.com/webstorm/



http://www.sublimetext.com/3





3. Nodejs 설치

- 마지막으로 Node.js를 설치합니다.


https://nodejs.org/en/




사이트에 들어가면 LTS버전과 Current버전이 있다.

LTS버전은 서버 환경에서 안정적으로 동작하도록 지원하는 버전(즉 안정적이다.)

Current버전 최신기능 버전으로 LTS에 비해 최신 기능 및 기존 버전을 수정한 기능들이 있다. (최신버전)


어떤 것을 사용하는지 크게 중요하지는 않지만 최신버전일 경우 새로운 기능이 추가 및 삭제 될 수도 있고 기존 기능들이 없어지거나 수정됬을 수도 있다.


필자는 LTS버전을 사용한다.(둘 중 무엇을 사용하던지 크게 의미는 없다.)

(LTS 와 Current를 게임으로 예를든다면 LTS는 실제 운영서버(롤서버)라면 Current는

(테스트서버/ 롤의 PBE서버) 같은 경우라 이해하면된다. 하지만 게임서버처럼

수시로 밸런스조정하거나 기능이 삭제되는 것처럼 크게 변화하지는 않는다.)



3. Nodejs의 환경변수 설정


-Node.js를 전역으로 사용하기위해서는 시스템 환경변수를 설정해야합니다.

 윈도우10버전 기준으로 환경변수 설정하는 법을 알려드리겠습니다.




1. 마우스 포인터를 윈도우 메뉴에 가져다 놓은 후 오른쪽 마우스 - 시스템(Y)클릭



2. 고급 시스템 설정 클릭




3. 환경변수 클릭



4. 시스템 변수(S)의 Path를 더블클릭


5. 새로 만들기(N) 클릭후 Nodejs의경로를 입력

(C:\Program Files\nodejs)




아마 Node.js설치를 막 클릭하셨다면

저와 같은 경로로 입력하시면 되겠습니다.


만약 이 위치가 아니라면 Node.js폴더를 찾으세요.




저의 Node.js의 경로는 C:\Program Files\nodejs이기 때문에

환경 변수(시스템 변수)에서 추가 시 경로를 C:\Program Files\nodejs로 지정했습니다.





6. 시작메뉴 - CMD검색 - 관리자 권한 실행 클릭




7. node -v 입력



node 버전을 알려준다면 시스템 환경변수가 성공적으로 된 것입니다.


(윈도우 7의 시스템환경변수 설정은 윈도우10과 별로 차이가 없습니다.

윈도우 메뉴 오른쪽마우스 - 고급 시스템설정 클릭 - 환경변수 - 시스템환경변수(S)의 새로만들기 버튼 클릭 - nodejs경로 입력) - cmd(관리자 권한으로 실행) - node -v)




다음 시간에는 간단한 NodeJS의 예제를 해본 후 프로젝트를 만들어 보겠습니다.


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

[Node.js] 2장 - Hello node js 출력 해보기  (0) 2017.05.09
댓글