본문 바로가기

개념정리

9/25[TIL]Node.js / Package.json / HTTP

이전에 배우기도 한 내용이지만 이번 스프린트에서 한 번 정리를 해주는 것 같아 정말 좋았다. 뭔가 강의를 듣고 한 번 정리를 하니 전 보다 더 후련해진 느낌?

 

Node.js

Node.jsjavascript를 컴파일해주는 엔진으로 빌드된 javascript가 구동 중인 환경이다. 쉽게 컴퓨터가 javascript를 명령어를 인식하게 끔 도와주는 환경이라고 보면 될 것 같다.

Node.js 는 이벤트 기반 및 논블로킹 I/O 모델이라고 볼 수 있는데 여기서 이벤트는 유저의 버튼 클릭이나 네트워크에 리소스를 요청하는 것을 뜻하고 논블로킹은 다음 함수의 실행이 현재 함수의 종료를 기다리지 않는 것으로 블로킹(다음 함수의 실행이 현재 함수의 종료를 기다리지 않음)의 반대 의미이다. I/O 모델은 input을 주면 output을 반환하는 모델로 인식하면 될 것이다. 정리하면

유저의 클릭이나 네트워크 리소스를 요청하는 이벤트가 논블로킹으로 이루어지는 input output 모델 이라고 보면 될 것이다. 그리고 빠르다는 장점을 가진다.

 

별도 설치를 하지 않아도 node상에서 쓸 수 있는 모듈이 존재한다. 이는 node와 함께 번들링 되어 있는 모듈이며 

require("") 방식으로 사용할 수 있으며 fs / http / url / path 가 존재한다.

 

npm(node package manager)은 무엇일까? npm은 세계에서 가장 큰 오픈소스 라이브러리 생태계 중 하나이다.

 

Package.json

node.js로 프로젝트를 하면 자연히 npm을 사용하게 되고 의존 모듈들을 npm으로 설치해서 사용하게 된다. 프로젝트 소스가 모듈에 의존하고 있기 때문에 모듈의 버전에 따라서 문제가 생길 여지가 있기 때문에 의존성 모듈의 버전 관리를 해줄 필요가 있다. npm은 프로젝트에 대한 설정을 package.json이라는 파일에 의존하고 있고 이 파일에 JSON형식으로 작성해서 프로젝트에 대한 관리를 할 수 있다. 쉽게 말하면 package.jsonnpm을 활용하기 위한 정보들이 모여 있는 파일이며 뿐만 아니라 프로젝트 전반에 관한 정보가 들어있다고 생각하면 될 것이다.

 

run script :  cli 에서 해당 코드를 실행시킬 수 있다.

 

dev-dependency

production과 관계 없는 개발만을 위한 dependency

1
2
3
$ yarn add 모듈명 --dev
 
$ npm install 모듈명 --save-dev
cs

--dev 옵션을 주어 등록할 수 있다.

 

Dependency

production과 관계 있는 dependency

npm을 쓸 때는 -–save 옵션을 줘야 한다. 이유는 우리가 흔히 하는 npm install package.json에 있는 dependency를 바탕으로 설치가 되는데 dependency에 등록 되어 있지 않다면 코드에서는 해당 모듈을 쓰고 있지만 npm install로는 설치 되지 않기에 에러가 발생하게 되고 팀 갈등의 주요 원인이 된다.

 

npm startrun script 사실은 package.json의 script start 부분에 설정되어 있다.

원래 서버를 업데이트 할 때 다시 껐다 켜야 하는 번거로움이 있지만 nodemon을 사용하면 즉각적인 업데이트 피드백을 가능하게 해주는 라이브러리이다.

npm install -–save nodemon

 

Npm init (npm을 사용하는 폴더로 정의하겠다!)

package name /version / description / entry point / test command / git repository / keyword / author / license 설정…

 

하게 되면 package.json 파일 생성

 

javascript 파일을 만들어 주고 package.json scriptnode 파일명.js를 넣고 하면

 

node 파일명 === npm start 가 같은 결과가 나오게 된다. (코드 실행)코드실행)

 

npm install -–save nodemon

nodemon 파일명 로 실행(실시간 업데이트!)

script start 부분에 nodemon 파일명 넣고 시작!!

 

HTTP

step1(도메인 이름 탐색)

1.url주소가 어떠한 ip를 가지고 있는 DNS 서버에 물어본다.

2. 그럼 DNS 서버는 응답으로 ip로 돌려준다.

(도메인 네임을 못 찾으면 사이트에 연결할 수 없다는 응답을 보낸다)

 

step 2(웹 서버(http) 요청)

1. 웹 서버의 라우팅(주소 탐색 규칙)에 따라 요청 처리

단순하게 정적 파일만 제공하는 경우도 있고(주소)

서버가 비즈니스 로직을 실행하도록 요청할 수도 있음(명령어)

2. 서버가 요청에 대한 응답을 자원의 형태로 전달

3. 서버가 보내주는 자원을 브라우저에서 처리

(리소스를 찾을 수 없으면 404 not found 창을 보게 된다)

 

http는 서버와 클라이언트가 주로 html 등의 문서를 주고받는 데 사용하는 프로토콜

주로 TCP/UDP 80번 포트를 사용(주소 뒤에 콜론과 함께 숫자가 있는 경우를 보면 된다)

http/1.1의 경우 요청과 응답은 start/status line, header 그리고 body로 이루어져 있다.

 

http요청은 URI을 통해 할 수 있으며 주소창을 통해 하는 요청은 전부 GET request이다.

 

수많은 status code 가 있지만

200대는 성공적인 응답을 

400대 클라이언트 에러

500대 서버 에러 정도만 지금은 이해해도 될 것 같다.

 

메서드

GET 특정 리소스를 가져오도록 요청

POST 데이터를 서버로 제출하는 용도로 서버 상태의 변화를 일으킴(폼 제출!) submit클릭

서버를 업데이트를 하는 경우에는(POST로 뭔가를 보낼 때)와 같이 보낸다

PUT POST와와 비슷하나 연속적인 요청 시에도 같은 효과를 가져옴. 기존 데이터를 교체하는 용도로 사용

서버 안에 있는 자원을 업데이트할 때 사용

DELETE 리소스의 삭제를 요청할 때 사용

 

 

 

'개념정리' 카테고리의 다른 글

10/5[TIL]React  (0) 2020.10.05
9/29[TIL]Refactor Express  (0) 2020.09.29
9/24[TIL]Browser Security  (0) 2020.09.24
9/23[TIL]Web Architecture  (0) 2020.09.23
9/22[TIL]fetch API  (0) 2020.09.23