study blog
[Node.js] Node.js란?/ Node.js 설치/ Express 설치 본문
Node.js 란?
태초에 HTML이라는 언어가 있었고, 자바스크립트는 HTML과 함께 사용하는 언어로 자리 잡혀있었다.
자바스크립트는 수학적 계산을 하기 위해 만들어진 언어가 아닌 HTML 조작과 변경을 위한 언어이다.
여기서 자바스크립트의 해석은 브라우저가 담당하는데, 브라우저란 크롬, 익스플로어, 파이어폭스 등을 뜻한다.
또한 브라우저마다 자바스크립트 해석 엔진이 다르다!
크롬은 V8, 익스플로어는 Chakra, 파이어폭스는 SpiderMonkey 등 다 다른데 여기서 크롬이 자바스크립트 해석을 잘해서 제일 빠르다.
그래서 크롬에서 V8이라는 해석 엔진을 떼서 개발하고 출시하는데 이게 바로 Node.js이다.
Node.js는 브라우저 내 말고도 다른 환경에서도 자바스크립트를 실행할 수 있게 도와주고, 덕분에 자바스크립트를 프로그래밍 언어처럼 사용할 수 있게 되었다. (ex. 서버 만들기 가능)
근데 왜 하필 Node.js로 서버를 만들까?
그 이유는 Non-blocking I/O 이 좋기 때문이다.
우리가 말하는 서버란 요청을 처리하는 기계라고 보면 되는데
일반 서버와 Node.js로 만든 서버는 약간의 차이점이 있다.
예를 들어 영화예매 사이트에서 4명의 요청이 있다고 치자.
A: 1장 예매 -> 1s
B: 1장 예매 -> 1s
C: 300장 예매 -> 300s
D: 1장 예매 -> 1s
일반서버는
A부터 D까지 요청이 순차적으로 처리되는데 C의 요청이 300s라는 시간이 걸리고 이 때문에 D는 한장을 예매하기 위해 300s를 기다려야 한다.
하지만 Node.js 서버는
일단 4개의 요청을 한 번에 다 받은 다음, 처리 요청이 빠른 것부터 먼저 실행을 하며 오래 걸리는 작업은 마지막에 실행한다.
그렇기 때문에 D는 C의 요청에 의한 300s를 기다릴 필요가 없게 된다.
이런 실행 과정은 Non-blocking 덕분에 할 수 있는 것이다.
예시를 보면 알 수 있다싶이
Node.js의 강점은 sns나 채팅서비스 같은 요청이 많은 서버에 대해 서버가 멈추지 않고 대기시간을 줄여줄 수 있고,
코드 또한 매우 짧고 쉬워서 빠른 개발이 가능하다는 것이다.
Node.js와 Express 라이브러리 설치하기
구글에 Node.js 검색하고 사이트에서 설치하면 되는데 경로는 건들지 말고 C드라이브 기본 경로로 놔두어야 한다!.!
(C드라이브 완전 중요📌)
그리고 에디터인 비쥬얼 스튜디오 코드(=VS code)를 설치해 준다.
기존에 Node.js가 설치가 되어있다면 버전을 확인해보자.
검색메뉴에서 명령 프롬프트를 검색해 나오는 터미널에 node -v를 작성하면 버전을 보여준다.
VS code를 쓰는 이유는 터미널를 사용하기 쉽기 때문이다.
VS code에서 express 라이브러리를 설치하려고 한다.
express는 서버를 쉽게 만들 수 있게 도와주는 라이브러리이다.
VS code 터미널에서 npm init을 입력해서 셋팅해보자.
npm은 라이브러리 설치를 도와주는 도구이다.
라이브러리를 많이 사용하게 되면 내가 어떤 라이브러리를 설치했는지 잊을 수 있으니 기록해놓는 것이 좋은데
이를 package.json에 기록하며, 이건 우리가 직접 기록하는 것은 아니고 npm init을 입력한다면 package.json을 자동 생성해주게끔 해준다.
npm init을 입력한 뒤 entry point가 나올 때까지 엔터를 누르고 entry point가 나왔다면
entry point: (index.js) 옆에 server.js 를 입력해주자.
그 다음 계속 엔터 누르면 끝! 확인해보면 package.json이 생성되어 있는 걸 볼 수 있다.
그 다음 express를 설치해준다.
npm install express를 입력하면 package.json에 express가 기록된 걸 볼 수 있다.
'제1장' 카테고리의 다른 글
[JavaScript] this와 arrow function 연습 (0) | 2022.03.01 |
---|---|
[Node.js] 서버/ body-parser/ POST요청/ get() (0) | 2022.02.28 |
[JavaScript] Arrow function (0) | 2022.02.26 |
[JavaScript] 자바스크립트로만 이미지슬라이드 구현하기 (2) / 무한 next 완성! (0) | 2022.02.25 |
[JavaScript] this 키워드 (0) | 2022.02.24 |