[코딩온] 웹개발자 풀스택 과정 8주차 회고 | Node.js

지현우·2024년 2월 14일
0

Node.js 에 대해 알아보자

Node.js

  • 구글 크롬의 자바스크립트 엔진(V8 Engine)에 기반해 만들어진
    Javascript 런타임
  • 이벤트 기반, 비동기 I/O 모델을 사용해 가볍고 효율적
  • npm 패키지는 세계에서 가장 큰 오픈 소스 라이브러리

런타임이란?

  • 프로그래밍 언어가 구동되는 환경
  • Javascript의 런타임 환경은 웹 브라우저만 존재 했었다
    -> Javascript를 서버단 언어로 사용하기 위해 나온 것이 node.js
    -> 웹 브라우저 없이 실행 가능

npm

Node Packgae Manager
노드 패키지를 관리해주는 틀 (npm에 업로드 된 모듈, 패키지들 간 의존 관계가 존재)

package.json

  • 패키지들이 서로 의존되어 있어, 문제가 발생할 수 있는데 이를 관리하기 위해 필요한 것
  • 프로젝트에 대한 정보와 사용중인 패키지 이름 및 버전 정보가 담겨 있는 파일

"name" : 패키지 이름
"version" : 패키지의 버전
"main" : 자바스크립트 실행 파일 진입점 (문답식에서의 entry point)
"description" : 패키지에 대한 설명
"scripts": npm run 을 이용해 정해놓는 스크립트 명령어
"license": 해당 패키지의 라이센스

npm 사용하기

npm init

  • 프로젝트를 시작할 때 사용하는 명령어
  • package.json에 기록 될 내용을 문답식으로 입력한다.

npm init --y

  • pacakge.json이 생성될 때 기본값으로 생성된다.

npm install 패키지 이름

  • 프로젝트에서 사용할 패키지를 설치하는 명령어
  • 설치된 패키지의 이름과 정보는 package.json의 dependencies에 입력된다.

Node.js 특징

  1. 자바스크립트 언어 사용
  2. Single Thread
  3. Non-blocking I/O
  4. 비동기적 Eevent-Driven

Single Thread

프로세스

  • 실행 중인 프로그램
  • 운영체제에서 할당하는 작업의 단위

Thread(스레드)

  • 프로세스 내에서 실행되는 흐름의 단위
  • 하나의 프로세스에는 n개의 스레드가 존재하며 동시에 작동할 수 있다.

Node.js는 사용자가 직접 제어할 수 있는 스레드는 하나이다.

  • 싱글 스레드가 주어진 일을 하나밖에 처리 못한다.
  • Non-blocking I/O 기능으로 일부 코드는 백그라운드(다른 프로세스)에서 실행 가능
  • 에러를 처리하지 못하는 경우 멈춘다.
  • 프로그래밍 난이도가 쉽고, cpu, 메모리 자원을 적게 사용한다.

에러를 처리하지 못하면 프로그램이 아예 중단됨

Non-blocking I/O

동기 (Synchronous)

  • 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것
  • 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어진다.
  • 한 요청에 서버의 응답이 이루어질 때까지 계속 대기해야 한다

비동기 (Asynchronous)

  • 동시에 일어나지 않는 것
  • 요청한 후 응답을 기다리지 않고 다른 활동을 한다.

I/O 작업 : 파일 시스템 접근 ( 읽기, 쓰기, 만들기 등 ), 네트워크 요청

Node.js는 표준 라이브러리의 모든 I/O 메서드를 비동기 방식으로 제공한다.

Event-Driven

  • Event-Driven: 이벤트가 발생할 때 미리 지정해둔 작업을 수행
  • ex) 클릭, 네트워크 요청, 타이머 등
  • 이벤트 리스너 (Event Listener)
    -> 이벤트 등록 함수
  • 콜백 함수 (Callback Function)
    -> 이벤트가 발생했을 때 실행되는 함수

Call Stack

Event Loop

Node.js의 역할

  • 간단한 로직
  • 대량의 클라이언트가 접속하는 서비스 (입출력이 많은 서비스)
  • 빠른 개발 요구, 빠른 응답시간 요구
  • 비동기 방식에 어울리는 서비스(스트리밍 서비스, 채팅 서비스 등 )

결론

서버에 데이터를 요청할때 필요한 axios fetch를 같이 알아봤다. 여기에 Ajax 등도 있다.
개인적으로 axios/fetch 이 두 가지를 사용하게 될거 같다.
다음에는 예제 등을 가져와 코드를 추가로 보충하겠다.

참고

[코딩온] 웹개발자 풀스택 과정 8주차 ppt

0개의 댓글