Node.js 개념 및 특성
Node.js의 개념
공식 홈페이지 설명
: 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임
노드는 서버가 아니고 런타임이며, 쉽게 말해서 자바스크립트 실행기다.
브라우저랑 HTML에서 JS가 해방된게 중요하다.
JS는 이제 앱도 만들 수 있고, 데스크탑 프로그램, 게임도 만들 수 있는 다양한 역할에서 사용이 가능해졌다.
개발자 중에선 웹 개발자가 제일 많은데,
웹 개발자는 JAVA를 사용하든 C#이든 무슨 언어를 사용하든 어쩔 수 없이 JS를 해야만 한다.
하지만 서버 쪽을 하려면 새로운 언어를 배워야 했는데,
이미 알고 있는 JS로 하니 접근성이 높아졌다.
노드의 가장 큰 장점은 자바스크립트를 사용하는 것이다.
js는 전세계 언어 1위
Node는 절대없어지지 않음. 자바스크립트를 없애야함.
node의 적은 deno 하나. deno말곤 아무도 node를 없앨 수 없음
예를 들어 다른 언어들은 json을 자기들 언어로 바꿔야하는데
json을 바꿔야할 필요가없음 json은 js니까
Node.js의 특성 및 동기 비동기
이벤트 기반이다. (노드말고도 대부분의 프로그램이 다 이벤트 기반이긴 하다)
이벤트의 예 : 클릭, 네트워크 요청, 타이머 등
이벤트 리스너 : 이벤트를 등록하는 함수
콜백 함수 : 이벤트가 발생했을 때 실행될 함수
노드가 쓰이는 방식은 대부분 2가지다.
- 블로킹이면서 동기 (코드가 순서대로 실행됨)
- 비동기이면서 논블로킹 (코드가 순서대로 실행되지 않는다)
노드에서는 동시에 돌아가는건 없다. 구현하려면 할 수 있지만 매우 어려움.
비동기
- 순서대로 실행되지 않지만
- 그것대로의 규칙이 있다.
- 그게 이벤트 루프
스레드
노드는 싱글스레드가 아니다.
작업관리자에서만 봐도 여러개가 있다.
노드를 실행할 때는 프로세스 안에 스레드가 여러개 뜨는데,
그 중에 하나만 컨트롤 할 수 있는 것.
나머지 스레드는 코드를 동시에 돌릴 준비를 한다.
그래서 많은 사람들이 싱글스레드라고 표현하지만 노드는 멀티 스레드다
(14버전부터는 아예 멀티스레드를 사용가능하게끔 했다.)
- 비유 -
페북,인스타,트위터 다 키고있는데
페북 키고 있는 동안은 인스타 알람이 안옴
페북을 끄고 인스타를 다시 들어가야함
멀티스레드는 스위칭만 하면되는 것
노드의 핵심은 '싱글 스레드 하나를 어떻게 효율적으로 관리하냐'다.
노드의 역할
노드는 서버가 아니지만 서버로 쓸 수 있다.
I/O 작업(인풋 아웃풋)이 많은, 즉 요청이 왔다갔다 하는게 많은 서버에 적합하다.
'Back > Node.js' 카테고리의 다른 글
노드 내장 객체 및 모듈 (계속 추가 예정) (0) | 2021.03.24 |
---|---|
노드 http연결 개념 (0) | 2021.03.24 |
Node.js 게시판 글 수정하기 (0) | 2021.03.22 |
Node.js ajax-post mongodb로 데이터 보내기 (2) | 2021.03.22 |
npm 설치 했을 때 오류 :: npm update check failedTry running with sudo or get accessto the local update config store viasudo chown -R $USER:$(id -gn$USER) /home/ubuntu/.config (0) | 2021.03.21 |