node.js
- 자바스크립트엔진으로 빌드된 자바스크립트 런타임 환경이다.
- 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 하는 자바스크립트 실행기
- 서버사이드 스크립트 언어가 아니라 프로그램(환경)이다.
- 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 만들어짐
- javascript를 웹브라우저에서 독립된 터미널에서 브라우저 없이 실행가능
- 백엔드 영역의 서버app 뿐 아니라 프런트엔드의 다양한 도구,라이브러리도 node에서 동작
- 프런트엔드 모던 자바스크립트 개발에 필수적인 환경이다.
- 이전엔 웹 표시부분은 javascript, 서버는 ruby, java등 사용했어야 했는데
- node를 이용해 한가지 언어로 전체 웹 페이지 구성 가능하다.
특징
- non-blocking I/O
- 단일 스레드 이벤트 루프
- 위의 2개로 높은 처리 성능을 가짐
- 플랫폼 제약을 벗어나 어떠한 환경이든 실행하도록 도와줌
- 단일 스레드로 동시에 실행 불가
- 데이터 실시간 처리로 빈번한 I/O에 적합 하지만, CPU 사용률이 높은 app엔 권장 x
장점
- 적은 컴퓨터 자원 사용
- I/O 작업이 많은 서버에 적합
- 웹서버 내장이기 때문에 별도의 웹서버 필요 x
- 자바스크립트를 사용해 json 형식과 쉽게 호환
- 개수는 많지만, 크기 작은 데이터를 실시간으로 주고 받는 것에 적합함 (네트워크, db, 실시간채팅)
npm (node package manager)
- 자바스크립트 패키지 매니저
- node.js에서 사용할 수 있는 모듈들을 패키지하여 모아둔 저장소 역할
- 패키지 설치 및 관리를 위한 CLI 제공
- 자신이 작성한 패키지 공개 가능
- 필요한 패키지 검색해서 재사용 가능
참고
하나몬, [Node.js] 개념 이해하기, 2021.01.04, hanamon
https://hanamon.kr/nodejs-%ea%b0%9c%eb%85%90-%ec%9d%b4%ed%95%b4%ed%95%98%ea%b8%b0/
'Front-End > JavaScript' 카테고리의 다른 글
[JavaScript] 생성자 함수 (0) | 2022.10.29 |
---|---|
[JavaScript] 객체 변경 방지 (0) | 2022.10.28 |
[JavaScript] 프로퍼티 어트리뷰트 , 프로퍼티 디스크립터 객체 (0) | 2022.10.28 |
[Javascript] 객체, 생성자 함수 숙지사항 (0) | 2022.10.26 |
[Javascript] 타입 관련 예외사항 (0) | 2022.10.26 |