데브코스 웹풀스택 과정/TIL

[8기 9회차] 0912 백엔드 기초 - Node.js 알아보기

thinktank911 2025. 9. 12. 09:04

HTTP 메소드

HTTP = 규약 = 정해둔 용어

  • 생성(=등록) : POST
  • 조회 : GET
  • 수정 : PUT(덮어쓰기) / PATCH
  • 삭제 : DELETE
  • (데이터 외 설정) HEAD, OPTIONS, CONNECT, TRACE

cf. patch : 바뀐 값만 일부 변경. 부분 수정
     ex. 마이페이지 : 연락처, 이메일, 집주소, 이름 중 특정 요소만 부분 수정

node.js

1) 백엔드에만 쓰이는 게 아니다

  • node.js 기반 프론트엔드 : 리액트, 뷰 ...etc
  • 활용 기업 : 넷플릭스, 에어비앤비, 링크드인, 우버, NASA

2) 우리나라에서도 node 시장이 커질까?

  • 풀스택으로 한다면 경쟁력 있다

3) 자바스크립트는 웹 브라우저 밖에서도 사용 가능하도록 만들었다.

 

node.js 특징

1) 싱글 스레드

- 요리사가 한명. 주문이 계속 밀려들어와도 한명이 쳐낸다.

2) 이벤트 기반

- 주문이 들어와야 일을 한다.
3) 논블로킹 I/O

- 라면 물 끓이고 => 볶음밥 요리 => 라면 요리

- 순차적으로 일하지 않고, 비는 시간 있으면 다른 일을 한다.

  cf. 스프링도 싱글스레드 기본 구조

 

논블로킹 실습, setTimeout

 

function first(){
    console.log("첫 번째");
}

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

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

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

 

※ vscode에서 자바스크립트 실행 :

  • node.js 다운
  • 확장 프로그램 코드러너 다운로드

 

모듈이란?

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

모듈 = 라이브러리

  • 내장모듈(표준모듈) : setTimeout 등
  • 외부 모듈 사용 : npm 이용

 

라이브러리 vs 프레임워크

1) 라이브러리

  • 장점 : 내가 원하는 걸 빌릴 수 있다
  • 단점 : 고르기가 힘들고 찾는 시간 오래 걸린다.

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

 

3) Node.js는 프레임워크가 아니다

  • node.js가 vscode에서 javascript를 구동할 수 있게 해줌.
    node.js로 자바스크립트 모듈을 만들고 사용할 수 있게 되었다.

 

npm 사용해보기 - figlet

  • npm 모듈 참고 사이트 : npmjs.com
  • figlet : 텍스트를 사용하여 그림처럼 표현하는 아스키 아트(ASCII Art)를 생성하는 프로그램 또는 모듈
    • ascii art 검색 시 figlet 나옴
  • 설치 : npm i figlet

 

콜백함수 확인하기

// figlet('출력하고 싶은 문자열',콜백함수[err, data])
// 함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달
// == 콜백 함수
figlet("HELLO", function (err, data) {
  // 익명의 함수를 쓰는 이유 = 이 함수를 쓸 일이 다른 데는 없어서
  // figlet 만든 사람이, 매개 변수로 함수를 받기로 했기 때문

  // 첫번째 매개변수 문자열 받아서,
  // 아스키 아트를 만든 다음에
  // 두번째 매개변수 function 함수를 실행 = 콜백
  if (err) {
    console.log("Something went wrong...");
    console.dir(err);
    return;
  }
  console.log(data);
});

 

http 모듈로 콜백 함수 확인

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

 

let, const 값 변경 가능

  • const는 초기화 이후 값 변경 불가
  • let은 변경 가능

템플릿 문자열

`${변수}` 이용해 변수와 연산자 같이 쓰기

console.log(num1 + " x " + num2 + " = " + num3);
console.log(`${num1} x ${num2} = ${num3}`); // 템플릿 문자열

 

npm 좀 더 뜯어보기 - -g, uninstall, is odd 설치/제거, package.json 뜯어보기

 

npm install/uninstall 모듈명

해당 모듈을 설치/제거한다.

ex> isOdd 모듈

const isOdd = require('is-odd');
 
console.log(isOdd('8')); //=> true
console.log(isOdd('3')); //=> true
 
console.log(isOdd(7)); //=> false
console.log(isOdd(2)); //=> false

 

package.json

npm install을 하면 package.json dependancies 에 해당 모듈이 표시된다.

  • dependancies = 의존성 = 사용할 것

-g : 글로벌, 전역

  • 모든 컴퓨터에 설치하겠다.
  • npm i -g figlet
  • 가능한 한 사용하지 않는다.

npm

  • 외부 모듈을 내 프로젝트에 설치할 수 있게 해준다
  • npm이 저장소에 외부 모듈을 설치를 우리가 원하는 프로젝트에 자동으로 해준다.
    = 설치 파일 다운로드 받아서 더블 클릭 (npm install 모듈)
    (cf. npm은 빠르고 간편하게 삭제도 가능 = npm uninstall 모듈)
  • npm i 모듈명 -g : 내 컴퓨터에 있는 모든 프로젝트에 해당 모듈을 설치 / 비추천