2023.12.05(화)
🤔Why Node.js?
- Node.js는 자바스크립트를 웹 브라우저 밖에서도 사용할 수 있게 해주는 운동장(런타임)
- 관련 Survey : Stack Overflow Developer Survey 2023
- 한국 전자정부표준프레임워크의 기반 기술이며 한국정보화진흥원에서는 공공기관의 웹 서비스 제공 시 Spring을 권장🔗 → 우리나라는 공공기관에서 Spring을 사용하기 때문에 비중이 높은 편이다.
- 지표를 보면 Node.js와 React를 많이 사용함을 알 수 있다.
- Netflix,Airbnb, LinkedIn, Uber, NASA, PayPal, eBay 등 많은 곳에서 Node.js를 사용하고 있다.
👀Node.js 특징
- 장점🔗🔗
- Node.js는 단일 스레드(Single-Thread)의 논 블로킹(Non-blocking I/O) 이벤트 기반 비동기 방식으로 처리되어 높은 처리 성능을 가지고 있다.
- 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.
- Javascript 언어로 Front-end 뿐만 아니라 Back-end 개발 환경을 구성할 수 있기에 생산성이 높고 러닝 커브가 줄어든다.
- 다양한 패키지 매니저(npm: node Package Manager)를 기반으로 다양한 모듈(패키지)을 제공하며 필요 라이브러리에 대해 설치하고 사용할 수 있기에 효율성이 좋다
👍Single-Thread
💡Process & Thread
- 주문을 점원 한 명이 처리

- 노드 프로세스는 멀티 스레드이지만, 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현
- 하지만 노드 14버전에 멀티 스레드 가능! (worker_threads 모듈) → CPU를 많이 사용하는 작업인 경우에 활용 가능 → 멀티 프로세싱만 가능했던 아쉬움을 달래줌
✌️Non-blocking I/O
💡Sync/Async & Blocking/Non-blocking
- 다른 요청의 작업을 처리하기 위해 현재 작업을 막지 않음 → 요청 순서와 상관없이 처리 속도가 빠른 것부터 응답 (Async & Non-blocking)

👌이벤트 기반
- 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

❓모듈(Module), 라이브러리(Library), 프레임워크(Framework)
-
모듈 ≈ 라이브러리 : 코드 모음집, 덩어리
-
프레임워크 : 필요해보이는 라이브러리/모듈을 미리 틀 안에 준비해둔 것
-
사실 우리는 이미 모듈을 사용해보았다. [🔗]
(http 모듈을 사용해서 다소 raw하게 코드를 작성했었는데 요즘에는 express라는 모듈을 사용한다고 한다.)

-
npm
을 이용해 외부 모듈/패키지를 다운로드 받을 수 있다.
-
설치 : npm install module-name
-
삭제 : npm uninstall module-name
-
유명한 ascii art 모듈 "figlet"
-
Install:
npm install figlet
or npm i figlet
-
Simple usage:
var figlet = require("figlet");
figlet("Hello World!!", function (err, data) {
if (err) {
console.log("Something went wrong...");
console.dir(err);
return;
}
console.log(data);
});