잡다한 사전

[2023.11.01] node.js 시작하기 본문

프로그래밍 언어/node.js

[2023.11.01] node.js 시작하기

잡사전집사 2023. 11. 1. 12:03
반응형

Node.js를 시작할 때는 설치를 해주어야합니다. 

 

https://nodejs.org/en/download

 

Download | Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

다운로드 할 수 있는 버전은 최신버전과 LTS버전 2가지가 있습니다.

(최신버진인 경우 가장 최신에 업데이트 된 버전을 다운로드 하는 것이고, LTS인 경우는 안전성이 증명된 최신버전으로 LTS를 좀 더 추천드립니다.)

 

Node.js란..

1. node는 Chrome V8 Javascript 엔진으로 빌드된 JavaScript 런타임입니다.

2. V8엔진은 구글에서 만든것으로 기존에서는 javaxcript가 브라우저내에서만 작동이 가능했지만 이를 브라우저가 없어도 작동할 수 있도록 만든 것입니다. 

 

최종적으로 node.js는 javascript를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경을 의미하는 것 입니다. 

 

Node.js 특징

1. 비동기 I/O처리 /이벤트 위주 : Node.js 라이브러리의 모든 API는 비동기식입니다. Node.js 기반 서버는 API가 실행이 되었을 때 데이터를 반환할때까지는 기다리지 않고 다음 API를 실행합니다. 그리고 이전 실행했던 API가 결과값을 반환할 시, Node.js의 이벤트 알림 메커니즘을 통해 결과값을 받아옵니다.

2. 빠른 속도 : 구글에서 만든 V8 자바스크립트 엔진을 사용하여 빠른 코드 실행이 특징입니다.

3. 단일쓰레드 / 뛰어난 확장성 : node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용합니다. 이벤트 매커니즘은 서버가 멈추지 않고 반응하도록 해주어 서버의 확장성을 키워줍니다. 하지만 일반적인 웹서버는 요청을 처라히가 위해 제한된 쓰레드를 생성합니다. 하지만 node.js는 쓰레드를 한개만 사용하고 Apache 같은 웹서버보다 훨신 많은 요청을 처리할 수 있는 장점이 있습니다. 

4. 노 버퍼링: node.js 어플리케이션은 데이터 버퍼링이 없으며, 데이터를 chunk로 출려합니다.

 

동기(Sync) & 비동기(Async)

동기(Sync) : "동기로 실행된다"라고 하면, 실행된 코드의 결과가 나올 때까지 대기하는 것을 말합니다. 

비동기(Async) : "비동기로 실행된다"라고 하면, 실행된 순서와 관계 없이 결과가 나오는 것을 말합니다.

 

Blocking Model & Non-Blocking Model

Blocking Model : 코드의 실행이 끝나기 전까지 실행 제어권을 다른곳에 넘기지 않아 다른 작업을 진행하지 않고 대기하는 것을 이야기합니다.

Non-Blocking Model : 코드의 실행이 끝나지 않아도 실행 제어권을 다른곳을 넘길 수 있으며, 코드가 실행이 가능한 것을 이야기합니다. 

 

 - 프로미스(Promise)

자바스크립트에서 비동기 처리를 동기로 처리할 수 있게 도와주는 Built-in 객체 유형입니다.

 

 - Promis 생성자 인터페이스

  - executor 에는 함수만 올 수 있으며, resolve, reject가 주입됩니다.

  - executor는 Promise의 실행 함수라고 불리고, Promise가 만들어질 때 자동으로 실행됩니다.

 

Promise가 연산을 언제 종료하는지는 상관을 하지 않으며, resolve, reject 중 하나를 무조건 호출을 해야합니다.

new Promies(executor);

new Promise((resolve, reject) => {
  //명령문
});

 

 - Promis의 상태

  - 대기(Pending) : 이행하거나 거부되지 않은 초기 상태

  - 이행(FulFilled) : 연산이 성공적으로 완료됨

  - 거부(Rejected) : 연산이 실패함

 

  - Promise.then

Promise 안에서 resolve가 실행 된 경우 then 메서드에 작성된 함수가 실행됩니다.

 

const resolvPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log('First');
    resolve('Resolve!');
   }, 1000);
  });
   
resolvePromise.then((data) => {
  console.log('Middle');
  console.log('List');
  console.log(data);
 })

 

 - Promise.catch

Promise 안에서 에러가 throw 되거나 reject가 실행되면 catch 메서드에 작성한 함수가 실행됩니다.

const errorPromise = new Promise((resolve, reject) => {
  setTimeout(() => {
    console.log('First');
    reject('Error!!');
  }, 1000);
});

errorPromise.then(() => {
  console.log('Middle');
  console.log('Last');
}).catch((error) => {
  console.log('에러 발생!', error);
});

 

반응형