[Node.js_4기] Today_I_Learn : Node.js입문_1 (24/01/17)

2024. 1. 17. 20:26공부/내배캠 TIL

목차

 

1. 학습 내용

2. 내용 정리

3. 예제

 

 

1. 학습 내용 

 

1.2 Node.js란 무엇일까?

1.5 Express.js  프레임워크

 

2. 내용 정리 

HTTP의 구성요소 

서버 : 클라이언트에 정보나 서비스를 제공하는 주체

클라이언트 : 요청 주체(브라우저, 프로그램, 앱, 다른 서버)

요청(Request)과 응답(Response) ->

1. 브라우저가 서버에 원하는 정보 요구(Reqeuest)

2. 서버가 페이지 확인 후 데이터 반환(Resoponse)

method : 

 - GET : 어떤 리소스를 얻을때 사용. 모든 요청은 GET메서드를 사용해 서버에 요청(예외도 있음)

 - POST : 데이터를 게시할때 사용. (회원가입, 게시글 작성, 댓글 작성)

더보기

<웹 서버와 브라우저 간의 통신 방식>

1️⃣ 사용자가 웹 브라우저의 주소창에 URL을 입력합니다.

( 사용자가 브라우저를 통해 HTTP request로 웹 서버에 사이트 요청.)

 

2️⃣ 웹 브라우저는 입력받은 URL을 DNS 서버로 전달하여 해당 IP 주소를 찾게됩니다.

3️⃣ DNS 서버는 도메인 이름을 IP 주소로 변환합니다.

4️⃣ 웹 브라우저는 해당 IP 주소로 HTTP 요청을 전달합니다.

5️⃣ IP 주소에 연결된 웹 서버는 요청(Request)을 받아 처리합니다.

(요청을 처리)

 

6️⃣ 웹 서버는 처리 결과를 HTTP Response로 브라우저에게 전달합니다.

(데이터를 브라우저에 전송)

 

7️⃣ 웹 브라우저는 받은 HTTP Response을 바탕으로 사용자에게 표시하게됩니다.

(서버에서 받아온 데이터를 이용해 웹사이트를 브라우저에 그려냄)

02. Node.js란?

1)  Node.js는 이벤트 기반, 논 블로킹 I/O모델을 사용해 가볍고 효율적인 JavaScript 런타임 입니다.

(서버라는 말은 없다. Node.js가 서버에도 쓰이지만 서버에만 쓰이진 않기 때문.)

(특성 : 논블로킹 I/O, 싱글 스레드, 이벤트루프)

 -  JavaScript런타임 : 브라우저가 아닌 로컬에서 실행하게 도와주는 환경.

 - 논 블로킹 I/O : 호출되는 I/O 함수가 바로 호출에 대해 리턴해주는 방식, 프로그램이 여러 작업을 동시 처리

 - 싱글 스레드 : 동작시 cpu/프로세서를 하나만 사용(리소스 아끼기) / 비동기 처리하여 동시 처리 가능

 - 호출 스택 : 함수의 실행 순서를 추적하는 자료구조.

 - 이벤트 루프 : 하나의 스레드만으로 여러 비동기 작업을 관리하기 위한 구현체.

 

3. 예제 

<이벤트 루프>

function firstFunction() {
  console.log('firstFunction 입니다.');
  secondFunction();
}

function secondFunction() {
  // 2 초간 기다린다.
  setTimeout(function () {
    console.log('secondFunction 입니다.');
  }, 2000);
}

firstFunction();
console.log('전역 코드 실행 중!');

// print: firstFunction 입니다.
// print: 전역 코드 실행 중!
/** 2 초간 기다린다. **/
// print: secondFunction 입니다.

firstFunction이 호출 스택에 추가되고 실행, secondFunction호출.
secondFunction이 호출 스택에 추가되고, setTimeout함수 실행.
setTimeout은 비동기 -> setTimeout을 이벤트 큐에 넣고 secondFunction을 스택에서 제거.
2초가 지나기 전 console.log('전역 코드 실행 중!') 실행. 2초가 지난 후 
secondFunction 실행.