본문 바로가기
TIL&WIL

241118 TIL - 정적/동적 웹페이지, ECMA, Node.js, 논블로킹I/O, 싱글스레드, 이벤트루프, IDE, REL 환경, 모듈과 패키지

by 나노다 2024. 11. 18.

정적 페이지 Static Web Page

미리 작성돼 확정된 페이지로, 실시간 정보나 맥락을 반영 못 함

 

동적 페이지 Dynamic Web Page

맥락이나 상황을 반영할 수 있는 페이지

 

ECMAScript

자바스크립트 개발 방식 표준. 브라우저 마다 저 마다의 언어를 개발하며 발생한 불편을 막기 위해 ECMA International에서 제정하고, 꾸준히 변경하고 새 기능 추가된 버전 업데이트되고 있음

 

Node.js

Node.js란

Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임 웹 프레임워크 기술

자바스크립트를 브라우저없이 실행하게 도와주는 환경

이벤트 기반이고, 논 블로킹 I/O 모델을 사용해 가볍고 효율적

npm은 세계에서 가장 큰 오픈 소스 라이브러리 커뮤니티

libuv : 비동기 I/O 작업을 수행할 수 있게 해주는 라이브러리

 

Node.js의 특성

Non-Blocking Input/Output

  • I/O : Input / Ouput, 프로그램의 실행 흐름을 제어하는 방식
  • 블로킹 : 특정 작업을 수행하는 동안 다른 작업을 중단시킴. 한 번에 하나의 작업만 처리할 수 있으며, 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출된 다른 함수에게 제어권을 넘겨주지 않음
  • 논블로킹 : 호출이 완료되기를 기다리지 않고 다음 작업으로 즉시 넘어갈 수 있는 방식. 호출된 함수의 작업 완료 여부와 상관없이 즉시 다른 호출된 함수에게 제어권을 반환

 

Single Thread

  • 스레드 : 프로그램이 동작할 때, CPU 또는 프로세서를 사용하는 단위. 여러 스레드를 사용하면 여러 작업을 동시에 처리할 수 있어 연신 시간을 단축시킬 수 있지만, 그만큼 복잡성을 증가시키고 리소스를 많이 소모함
  • Race condition : 동시성 문제, 여러 스레드가 공유하는 자원에 대해 동시접근을 하는 경쟁상태를 의미
  • Node.js는 싱글 스레드임에도 불구하고 I/O 작업이 발생한 경우 이벤트 루프를 통해 여러 작업을 효율적으로 동시 처리

 

Event Loop

콜스택과 이벤트 큐를 관찰하면서, 콜스택이 비어있고 이벤트 큐에 작업이 있다면 그 작업을 콜스택으로 이동하는 역할

시간이 오래 걸리는 작업을 이벤트 큐에 넣어 비동기적으로 처리하고, 그 동안 콜스택에서 다른 작업들을 계속 처리

 

IDE (Integrated Development Environment)

통합 개발 환경 : 여러 개발자 툴을 결합해 모든 작업을 한 프로그램 안에서 처리할 수 있는 환경을 제공하는 소프트웨어

 

REPL 환경

Read Evaluate Print Loop

입력받은 코드를 읽어들여 메모리에 저장하고, 평가된 값을 출력함, 특정 신호를 입력받기 전까지 이 과정을 반복

사용자가 입력한 코드의 결과를 즉시 확인할 수 있게 함

 

모듈과 패키지

  • 코드의 재사용성 높이기 위해 작성된 독립적인 코드 조각인 모듈
  • 모듈을 포함하고 있거나 다른 패키지에 의존하고 있는 코드의 집합인 패키지

npm이나 yarn같은 패키지 매니저를 통해 업로드해 다른 개발자들과 공유하는 모듈이 패키지

의존 관계 : 패키지가 다른 패키지의 기능을 필요로하는 경우. A가 B를 필요로하면 A는 B에 의존