* 본 시리즈는 [위데이터랩]의 Node.js 강의를 매주 수요일 1시간씩 듣고 복습한 기록입니다.
사전지식
- 정적 웹 페이지와 동적 웹 페이지
- 정적 웹 페이지(Static Web Page)
- 웹 서버(Web Server)에 미리 저장된 파일(HTML 파일, 이미지 등)이 그대로 전달되는 웹 페이지
- 서버는 사용자의 요청(Request)에 맞는 저장된 웹 페이지를 보냄
- 사용자는 서버에 저장된 데이터가 변경되지 않는 한, 고정된 웹 페이지를 보게 됨 (댓글 기능 없는 게시판, 고정된 인물 소개 페이지 등)
- 동적 웹 페이지(Dynamic Web Page)
- 웹 서버(Web Server)에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달되는 웹 페이지
- 서버는 사용자의 요청(Request)을 해석해 데이터를 가공한 후 생성되는 웹 페이지를 보냄
- 사용자는 상황, 시간, 요청 등에 따라 달라지는 웹 페이지를 보게 됨 (유튜브의 댓글 페이지, 쇼핑몰의 상품 목록 페이지, 네이버의 뉴스 페이지 등)
- 정적 웹 페이지(Static Web Page)
- 클라이언트와 서버
- 클라이언트: 요청을 보내는 주체 (모바일 웹, 웹 브라우저 등)
- 서버: 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
- 프론트엔드와 백엔드
JavaScript의 탄생 배경
- 1993년 UI 요소가 더해진 Mosaic Web Browser 출시
- 텍스트와 이미지로 이루어진 정적인 웹 페이지
- 동적인 웹 페이지를 만들자(Scripting 언어 추가하자)는 수요 증가
Node.js의 탄생
Node.js의 탄생 배경
- JavaScript의 한계
- 원래 JavaScript는 script 형식으로 브라우저 내에서만 동작
- 동적 웹 페이지를 만들 수 있게 해주는 역할에 그침
- JavaScript로 서버 쪽 어플리케이션을 만든 게 Node.js
Node.js 탄생이 불러온 변화
- node.js 개발 전: 자바스크립트는 웹브라우저에서만 사용 가능했음 (한정된 활용 범위)
- node.js 개발 이후
- JS를 브라우저 밖에서 사용 가능하게 함 > JS의 활용 범위가 늘어남
- avaScript 개발자들이 브라우저 외의 영역을 개발할 때 JS가 아닌 언어를 배워야 할 필요성을 사라지게 함
- 크롬: v8이라는 자바스크립트 엔진을 출시해 자바스크립트를 해석
Node.js의 개념 · 특성 · 장단점
개념
- 크롬 v8 JavaScript 엔진으로 빌드된 JS 런타임
- Node.js ≠ 서버
- Node.js는 크롬 v8 자바스크립트 엔진으로 빌드된 JS 런타임
JavaScript | JavaScript 엔진 | Node.js |
프로그래밍 언어 | Chrome의 v8 | 런타임 |
특성
- 이벤트 기반
- 특정 버튼 클릭(이벤트 발생) 시 특정 기능 발동
- 논블로킹 (비동기 가능)
- 일부 코드를 백그라운드에서 실행시켜 동시 실행 가능
- 비동기가 안 될 경우엔, 대량 트래픽을 감당하지 못하고 서버가 다운됨
- 싱글스레드
- 프로그래밍 난이도가 쉬우며, CPU와 메모리 자원을 적게 사용
장단점
장점 | 단점 |
멀티스레드 방식에 비해 컴퓨터 자원을 적게 사용 | 싱글스레드라서 CPU 코어 하나 사용 |
I/O 작업이 많을수록 유리 | CPU 작업이 많을수록 불리 |
웹 서버가 내장되어 있음 | 서버의 규모가 커졌을 떄 관리가 어려움 |
API 작업이 유리 (JavaScript) | |
개발 효율성이 좋음(개발기간) (> 스타트업에서 많이 사용) | |
안정성, 보안성이 충분히 검증됨 : NASA, 에어비엔비, 우버, 넷플릭스, 링크드인, 페이팔, 월마트, 이베이 등 |
Node.js 설치
- Node.js 사이트에서 LTS 버전 다운로드 및 실행
Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
Node.js 설치 확인
- cmd창에 버전을 확인하는 명령어 입력
- node -v: 현재 Node.js.버전 알려주는 명령어
- npm -v: 현재 npm 버전 알려주는 명령어
'Node.js' 카테고리의 다른 글
[Node.js] 4. HTML 파일을 받아 출력하기 (2) | 2023.05.17 |
---|---|
[Node.js] 3. npm과 Express.js 활용하기 (2) | 2023.05.10 |
[Node.js] 2. http 모듈로 API 만들기 (0) | 2023.05.03 |