데브코스

백엔드(3) - 모듈

hxx_1 2024. 8. 29. 21:15

HTTP method

: HTTP 에 담아 보내는 나의 목적

  • 생성(=등록): POST 
  • 조회: GET
  • 수정: PUT (덮어쓰기)  / PATCH
  • 삭제: DELETE
  • HEAD , OPTIONS ,CONNECT ,TRACE  // 잘 사용하지 않음, 가볍게 보기

cf. PATCH : 일부 변경, 부분 수정 

 

Node.js

: 자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼(운동장)

: 특징 => 싱글 스레드, 이벤트 기반, 논블로킹 I/O

  • 싱글 스레드: 요리사가 한 명, 주문이 계속 밀려들어와도 한 명이 어떻게든 쳐내야 한다.
  • 이벤트 기반: 주문이 들어와야만 일을 합니다. ( = 주문이 없으면, 일을 안한다.)
  • 논블로킹: 한 명이 일을 하는데, 요리를 순차적으로 X, 중간 중간 비는 시간이 있으면 다른 요리를 한다. 
function first(){
  console.log("첫 번째")
}

function second(){
  console.log("두 번째")
}

function third(){
  console.log("세 번째")
}

first();
setTimeout(second,2000); //second 함수를 2초 뒤에 실행
third();

논블로킹 실습

 

➡️second 함수를 2초 뒤에 실행하게 했더니, 그것을 기다리고 third 함수를 실행하는 것이 아니라 third 함수를 먼저 실행하고 second 함수를 실행하는 것을 볼 수 있다. 이를 통해 node.js 의 '논블로킹' 이라는 특징을 확인할 수 있다. 


모듈

: 내가 만든 게 아니라, 선배 개발자들이 미리 만들어둔 코드 덩어리

: 사용하려면

   1) 기본 내장 모듈 사용 ex) setTimeout() 

   2) 외부 모듈 사용 => npm     

: Node.js 덕분에 자바스크립트 모듈을 만들 수 있게 되었고, 사용도 할 수 있게 되었다 ! 

: = "라이브러리"

 

라이브러리 vs 프레임워크

라이브러리

  • 도서관: 분류 => 상세 주제의 한 권의 책을 골라냄! 기준:  "출판사, 작가, 내용, ..."
  • 장점: 내가 원하는 걸 빌릴 수 있다.
  • 단점: 고르기가 힘들 수 있다, 찾는 시간이 오래 걸린다, 도서관 가는 시간 ... 
  • = 모듈

프레임워크

  • 내가 만들고 싶은 서비스를 구현하는 데 필요한 모든 일을 틀 안에서 하는 것 
  • 필요해보이는 라이브러리(모듈)를 미리 다 틀 안에 넣어둔 것이 프레임워크 

 

HTTP 모듈

let http = require('http');

function onRequest(request, response) {
  response.writeHead(200, { 'Content-Type': 'text/html' });
  response.write('Hello Node.js');
  response.end();
}

http.createServer(onRequest).listen(8888);
// http 모듈에 createServer 함수에서 할 일을 다 한 다음에
// onRequest 콜백 함수를 실행시켜 달라고 매개변수로 던진 것

 

npm

: 외부 모듈을 내 프로젝트에 설치할 수 있게 해준다. 

: 저장소에 "외부 모듈" 설치를 우리가 원하는 프로젝트에 자동으로 해준다.

= "프로그램" 설치 파일 다운로드 받아서 더블 클릭 ( =npm install 모듈)

= 빠르고 간편하게 삭제도 가능하다 ( =npm uninstall 모듈)

 

1️⃣ 모듈 설치하기 ( -g(global) 를 맨 뒤에 붙일 경우 모~든 프로젝트에 해당 모듈이 설치됨 , 추천하지 않음 )

npm install 모듈이름

 

2️⃣ 모듈 삭제하기

npm uninstall 모듈이름

🌟 배운 점

오늘은 모듈과 npm에 대해 중점적으로 배웠다. 예전부터 인강을 들을 때면 터미널에 입력할 때 어떨 때는 명령어로 node 를 쓰고, 어떨 때는 npm 을 쓰는 것을 보면서 둘의 차이점에 대해 궁금했었는데, 오늘 학습을 통해 정확하게 배웠다. 그동안은 용어의 뜻을 제대로 모른 채로 쓰는 경우가 많았는데, 이제 뜻을 정확하게 배워서 헷갈리지 않을 것 같다.