Node.js 정의
: node.js는 Chrome V8 Javascript 엔진으로 빌드된 자바스크립트 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다.
( 출처 : Node.js 공식 사이트 )
Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
"한마디로 정리하자면.. 자바스크립트를 컴퓨터에서 브라우저없이 실행하게 도와주는 환경을 node.js라고 부릅니다"
"자바스크립트는 Async(비동기) + Non-blocking Model을 채용하여, 현재 실행중인 코드의 실행이 끝나지 않아도 다음 코드를 호출할 수 있어요."
Node.js 장단점 정리
장점 | 단점 |
멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용 | 기본적으로 싱글스레드라 CPU 코어을 하나만 씀 |
I/O 작업이 많은 서버로 적합 | CPU 작업이 많은 서버로 부적합 |
웹 서버가 내장되어 있음 | 스레드가 하나 뿐이므로 더 주의가 필요. 이 스레드가 죽으면 모든게 끝난다..ㅠ |
자바스크립트를 사용 | 서버 규모가 커졌을 때, 서버를 관리하기가 어려움 |
JSON 형식과 쉽게 호환됨 |
< 주요 용어 정리 >
- 블로킹 모델 ( blocking ) :
코드의 실행이 끝나기 전까지 실행 제어권을 다른 곳에 넘기지 않아 다른 작업을 하지 못하고 대기하는 것을 말한다. 비동기 처리 불가능!
예. Java, C언어
// 블로킹 예시
const jt = require('jt');
const data = jt.readFileSync('/file.md'); // 파일을 읽을 때까지 여기서 블로킹됨
console.log(data);
moreWork(); // moreWork는 console.log(data)가 실행되고나서 실행
- 논 블로킹 I/O 모델 ( non-blocking ) :
코드의 실행이 끝나지 않아도 실행 제어권을 다른 곳에 넘겨 다음 코드가 실행될 수 있는 것을 말한다. 비동기 처리가 가능!
예. 자바스크립트
// 논블로킹 예시
const jt = require('jt');
jt.readFile('/file.md', (err, data) =>{
if(err) throw err;
console.log(data);
});
moreWork(); // moreWork는 console.log 이전에 실행될 것입니다.
- Runtime : 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. Javacript는 기존 웹 브라우저에 종속되어 실행되었고 이를 브라우저 밖에서는 사용을 할 수가 없었다.
'프로그래밍 > Node.js' 카테고리의 다른 글
[6] Node.js PalPalGram 프로젝트 (node.js 8조) (0) | 2023.06.26 |
---|---|
[5] 늘 헷갈리는 GET과 POST의 차이.. (0) | 2023.06.22 |
[3] 인터넷 쓸때마다 들어본 이름, HTTP란? ( + 웹서버 / GET과 POST차이) (0) | 2023.06.13 |
[2] 늘 헷갈리는 동기(Sync)와 비동기(Async) 차이 / 객체 리터럴 / Error handling _JavaScript (0) | 2023.06.12 |
[JavaScript] 자바스크립트 기초 공부! (변수와 상수/연산자/데이터타입/객체/배열/형변환) (0) | 2023.05.24 |