데브코스 TIL - Day 13
23년 12월 5일 강의를 들은 내용과 추가로 더 학습한 내용을 기록한 글입니다.
HTTP Method
HTTP에 담아보내는 나의 목적
- 생성(=등록): POST
- 조회: GET
- 수정: PUT(덮어쓰기), PATCH(일부 변경)
- 삭제: DELETE
- HEAD, OPTIONS, CONNECT, TRACE
※ PATCH는 마이페이지에서 연락처나, 이메일 등 부분 수정할 때 사용
Node.js
특징
- 이벤트 기반
- 싱글 스레드
- 논 블로킹 I/O
Eg. 라면가게에 요리사가 한명이라고 생각해보자!
만약 라면가게에 사람이 몰려서 주문이 밀린다면?
주문이 계속 밀려도 요리사가 한명이기때문에 그 한명이 모든 요리를 쳐내야한다 => 싱글 스레드만약 라면가게에 주문이 없으면?
주문이 없으면 일(요리)를 하지 않는다 => 이벤트 기간만약 라면 1개와 볶음밥 1개 주문이 들어왔다면?
라면 1개를 끓일 때 총 10분이 걸리지만, 그 중 5분은 물이 끓는 시간이다. 이 때 요리사는 물이 끓는 동안 아무것도 하지않고, 물이 끓는 것을 기다린다. 볶음밥을 만들려면 총 5분이 걸린다. 이 때 라면을 다 끓이고, 볶음밥을 만드는 것이 아닌, 라면의 물 끓는 시간동안 볶음밥 요리를 하고, 다시 라면을 끓인다 => 논 블로킹 I/O
논블로킹 실습
1
2
3
4
5
6
7
8
9
10
11
12
13
function first() {
console.log("첫 번째");
}
function second() {
console.log("두 번째");
}
function third() {
console.log("세 번째");
}
first();
second();
third();
1
2
3
4
PS C:\Users\user\Desktop\non-blocking> node nonBlockingDemo.js
첫 번째
두 번째
세 번째
first
- second
- third
순으로 진행
- second함수를 setTimeOut으로 2초 늦게 출력시키기
1
2
3
4
5
6
7
8
9
10
11
12
13
function first() {
console.log("첫 번째");
}
function second() {
console.log("두 번째");
}
function third() {
console.log("세 번째");
}
first();
setTimeout(second, 2000);
third();
1
2
3
4
PS C:\Users\user\Desktop\non-blocking> node nonBlockingDemo.js
첫 번째
세 번째
두 번째
first
- third
- second
순으로 진행
모듈
다른 개발자들이 미리 만들어둔 코드 덩어리
모듈을 가져다 쓰고싶다면
- 기본 내장 모듈 사용하기
- 외부 모듈 사용하기
npm
npm?
npm 공식 홈페이지 https://www.npmjs.com/
외부 모듈을 내 프로젝트에 설치할 수 있게 해주는 것
npm install 패키지
: 패키지 설치npm install -g 패키지
: 전역 패키지 설치 (모든 프로젝트에 설치하겠다.)npm uninstall 패키지
: 패키지 삭제
라이브러리 vs 프레임워크
라이브러리 = 모듈
- 다른 사람이 만들어 놓은 코드를 가져다 사용
- 내가 직접 선택
프레임워크
- 내가 만들고 싶은 서비스를 구현하는데 필요한 모든 일을 틀 안에서 하는 것
- 필요한 라이브러리(모듈)을 미리 다 틀 안에 넣어둠
npm과 figlet 사용해보기
figlet 설치
npm install figlet
demo code
- 첫번째 매개변수 “Hyemin!”라는 문자열을 받아서,
- 아스키 아트를 만든 다음
- 두번째 매개변수 콜백 함수 실행
※ 콜백함수 : 함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달하는 것
1
2
3
4
5
6
7
8
9
10
11
var figlet = require("figlet");
figlet("Hyemin!", function (err, data) {
// 오류 발생 시
if (err) {
console.log("Something went wrong...");
console.dir(err);
return;
}
console.log(data);
});
output
1
2
3
4
5
6
7
PS C:\Users\user\Desktop\non-blocking> node figletDemo.js
_ _ _ _
| | | |_ _ ___ _ __ ___ (_)_ __ | |
| |_| | | | |/ _ \ '_ ` _ \| | '_ \| |
| _ | |_| | __/ | | | | | | | | |_|
|_| |_|\__, |\___|_| |_| |_|_|_| |_(_)
|___/
http 모듈 뜯어보기
- http 모듈 createServer 함수에서 할일을 다 한 다음에
- onRequest 함수 실행시켜달라고 매개변수로 던진 것!
1
2
3
4
5
6
7
8
9
let http = require("http");
function onRequest(req, res) {
res.writeHead(200, { "Content-Type": "text/html" });
res.write("Hello Node.js");
res.end();
}
http.createServer(onRequest).listen(8888);
package.json 뜯어보기
- dependencies: 사용할 모듈
var, const, let
- var
- let
- 블록 스코프
- 값 재할당 가능
- const
- 블록 스코프
- 값 재할당 불가능
This post is licensed under CC BY 4.0 by the author.