백엔드(3) - 모듈
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 을 쓰는 것을 보면서 둘의 차이점에 대해 궁금했었는데, 오늘 학습을 통해 정확하게 배웠다. 그동안은 용어의 뜻을 제대로 모른 채로 쓰는 경우가 많았는데, 이제 뜻을 정확하게 배워서 헷갈리지 않을 것 같다.