비동기 입출력, 이벤트기반 입출력, 노드js에서 사용하는 모듈을 기반으로 작은 크기의 데이터들을 굉장히 빠른속도로 처리한다.
노드의 비동기 입출력 방식
비동기 입출력(논블로킹 입출력, Non-Blocking IO)방식 작업을 진행하는 중에 스레드의 동작을 멈추지 않고 다른 작업을 진행하는것, 그렇다면 어떻게 처리하는 것일까? =>프로그램에서 해당 파일의 내용을 처리할 수 있는 시점이 되면 ‘콜백함수’가 호출된다. 콜백함수는 파일 읽기 요청을 하기전에 미리 등록해놓고 요청이 끝나면 자동으로 콜백함수를 호출한다.
- 콜백 함수의 정의 자바 스크립트에서는 변수에 함수를 할당할 수 있다. 따라서 변수에 할당된 함수를 다른 함수의 파라미터로 전달할 수 있다. 이렇게 파라미터로 전달된 함수를 다른 함수의 내부에서 호출하는 것이 콜백 함수이다.
이벤트 기반 입출력 방식
기존의 자바스크립트는 인터프리터 방식으로 속도가 느려 문제가 되었다. 하지만 크롭에서 개발한 V8엔진은 자바스크립트코드를 네이티브 코드로 바꿔 실행할 수 있다. 노드는 이 이 엔진을 사용하여 자바스크립트 코드를 빠르게 실행한다.
웹서버에 데이터를 요청하고 응답을 받으면 콜백함수가 자동으로 호출, 이 함수는 res라는 이름의 객체를 전달받는다. 이 res객체는 수신한 데이터를 이벤트 이름으로 구별할 수 있다. js에선 on()메서드를 사용해 이벤트를 콜백함수와 바인딩(Binding)할 수 있다.
모듈의 사용
노드에서는 필요한 기능을 별도의 자바스크립트로 만든 후 필요할 때마다 불러올 수 있다. 또한 그 형태는 CommonJs표준 스펙을 따른다.
var module_1=require('module_1')
또한 여러개의 모듈을 합쳐서 하나의 패키지(Package)로 만들어 두면 다른 프로그래머들도 npm프로그램으로 손쉽게 패키지를 설치하여 사용할 수 있다.