[TIL] 24.01.24

sssujijjl·2024년 1월 24일

[TIL]

목록 보기
23/51

JavaScript

: 정적인 문서를 조금 더 동적으로 표현할 수 있도록 만들어주는 것
• 정적 페이지 : 미리 작성되어 확정된 페이지로, 실시간 정보나 맥락을 반영하지 못함
• 동적 페이지 : 맥락, 상황을 반영할 수 있는 페이지

Node.js

: Javascript를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경
• Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임
• 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적
• Node.js 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계

V8 엔진 : 구글이 개발하여 구글 크롬 브라우저에서 사용하는 자바스크립트 엔진
(브라우저 환경 이외에서도 자바스크립트 사용 가능)
libuv : Node.js가 비동기 I/O 작업을 수행할 수 있게 해주는 중요한 라이브러리
(블로킹 I/O 모델 -> 여러 요청을 효율적으로 처리 가능)

Node.js 장점

• 논 블로킹
• I/O 싱글 스레드
• 이벤트 루프

논 블로킹 I/O (Non-Blocking Input/Output)

블로킹 I/O, 논 블로킹 I/O : 프로그램의 실행 흐름을 제어하는 방식

• 블로킹
: 프로그램이 특정 작업을 수행하는 동안 다른 작업을 중단시키는 방식
블로킹 I/O: 한 번에 하나의 작업만을 처리할 수 있으며,
호출된 함수가 자신의 작업을 모두 마칠 때 까지 호출한 함수에게 제어권을 넘겨주지 않습니다.

• 논 블로킹
: 프로그램이 여러 작업을 동시에 처리 가능
논 블로킹 I/O: 시스템 호출이 완료되기를 기다리지 않고 바로 다음 작업으로 즉시 넘어갈 수 있는 방식, 호출된 함수는 작업의 완료 여부와 상관없이 즉시 제어권을 호출한 함수에게 반환합니다.

• I/O : 데이터의 입력 (Input) / 출력 (Output)

싱글 스레드

: 스레드 하나를 사용, 동시에 하나의 작업만을 처리할 수 있음
• 스레드 : 프로그램이 동작할 때, CPU 또는 프로세서를 사용하는 단위
여러 스레드를 사용하면 여러 작업을 동시에 처리 가능 -> 복잡성 증가, 리소스 소모 증가

싱글 스레드 방식을 사용하는 이유

  • 스레드 생성과 관리에 드는 부담
  • 컴퓨팅 리소스를 효율적으로 사용
  • 한 번에 하나의 작업만 처리하여 동시성 문제 방지
    (Race condition : 여러 스레드가 공유하는 자원에 대한 동시접근 문제 방지)

Module

: Node.js에서 코드의 재사용성을 높이기 위해 작성된 독립적인 코드 조각
(일반적으로 프로젝트 내에서 사용되는 코드 조각을 의미)

Package

: 모듈을 npm 또는 yarn 과 같은 패키지 매니저를 통해 업로드 하여 다른 개발자 들과 공유할 때
(모듈을 포함하고 있거나 다른 패키지에 의존하고 있는 코드의 집합)

Package Manager

: 패키지를 손쉽게 다루는 작업을 안전하고 편리하게 사용하기 위한 툴
: Node.js 패키지의 설치, 업데이트, 삭제 등, 패키지간의 의존성을 관리

1) npm
2) yarn

모듈이 필요한 이유

  1. 코드 베이스를 분리할 수 있으며, 이를 통해 코드를 구조적으로 관리
  2. 코드를 재사용 가능하게 만들어줍니다. 즉, 모듈화(Modularize)
  3. 코드의 함수와 변수중 일부만 외부에서 사용하도록 노출 가능
    → 즉, 모듈 내부의 코드 세부사항을 외부로 부터 은닉하는 정보은닉(information hiding)을 구현 할 수 있게 됩니다.
  4.  해당 모듈이 참조하고 있는 다른 모듈에 대한 종속성(Dependency)을 관리하는 역할을 담당

0개의 댓글