본문 바로가기

프로그래밍 언어/JavaScript

#01 Node.js

반응형

 

용어 정리

비동기 입출력(논블록킹 입출력): 파일이 실행될 때 작업이 끝날 때까지 기다리지 않고 다른 작업을 실행하는 방식

 

콜백 함수: 변수에 할당된 함수를 다른 함수의 파라미터로 전달할 수 있다. 이렇게 파라미터로 전달된 함수를 다른 함수의 내부에서 호출하는 것이 콜백 함수이다.

 

이벤트 기반 입출력 모델: 파일 시스템에서 콜백 함수를 호출하는데, 파일 시스템이 이벤트와 함께 호출하는 방식

- 상당히 가볍고 효율적으로 많은 데이터를 주고받는 실시간 프로그램에서 큰 효과를 발휘


Node.js란?

자바스크립트를 프로그래밍 언어로 사용하는 비동기 방식을 사용하는 이벤트 기반 입출력 모델

 

Node.js가 만들어진 배경을 통해 Node.js의 기술 소개

 

  1. 과거 웹 서버에 파일 업로드 할 때, 업로드가 완료되기 전까지 웹 서버에서 데이터를 조회하거나 하는 다른 작업이 불가능 했음 이를 해결하기 위해 만들어짐
    → node는 비동기 입출력 방식을 적용
  2. 자바스크립트는 인터프리터를 사용하므로 전체적으로 속도가 느리다 (비동기로 바꿔도 느릴 수 있음)
    인터프리터(interpreter): 코드를 한 줄씩 해석하면서 실행
    네이티브 코드로 바꾼 후 실행할 수 있는 V8 자바스크립트 엔진 개발로 해결 (node는 V8엔진을 이용)
  3. 소스 파일 하나에 모든 기능을 넣기에 복잡하고 양이 많음
    → 모듈(Module) 사용: 코드를 분리하여 별도의 파일(모듈) 제작 → 필요할 때 불러서 사용할 수 있어 관리가 쉬움

Module 사용법

  1. 코드의 일부분을 떼어 별도의 파일로 저장한다. → 이렇게 만들어진 파일 = 모듈
  2. require() 함수로 모듈 호출
    - 이렇게 불러들인 파일은 자바스크립트 객체로 인식됨
var module_1 = require('module_1');

 

추가적으로 이렇게 만든 모듈을 하나의 패키지로 만들어 두면 npm 프로그램을 이용해 공유가 편해짐
 - npm(Node Package Manager): 다른 프로그래머가 미리 개발하여 올려둔 패키지를 찾아 설치하는 방법을 제공

 


V8 엔진에서 작동하는 노드의 아키텍처 (do it node.js 프로그래밍 책 그림)

 

노드 아키텍처

  • 이벤트를 받아 처리하는 기능이 아키텍처에서 중요하다.
  • 노드는 대부분 서버 쪽에서 동작하는 프로그램을 만드는 것이 주 임무이기 때문에 기본 기능인 소켓이나 HTTP 프로토콜을 사용해 데이터를 송수신 하는 기능을 포함함

 


HTTP를 이용해 웹 서버로 요청을 보내고 응답 받기

request()

 

웹 서버에 데이터를 요청, 응답을 받으면 콜백 함수가 자동으로 호출

응답에는 res라는 이름의 객체를 전달 받음
res: 수신한 데이터를 이벤트 이름으로 구별할 수 있는 객체

 

on()

 

콜백 함수와 이벤트를 바인딩(Binding)

바인딩: 서로 묶어서 연결

 

반응형