본문 바로가기

프로그래머스 풀스택 데브코스/데브코스 TIL

웹 풀사이클 데브코스 TIL 13일차

HTTP method

  • POST: 생성, 등록
  • GET: 조회
  • PUT: 덮어쓰기, 값이 있든 없든 새걸로 덮어쓰기
  • PATCH: 일부 수정, 바뀐거만. 사용하기 까다로워서 잘 안씀
  • DELETE: 삭제
  • HEAD, OPTIONS, CONNECT, TRACE: 데이터 외의 것들에 대해 설정, 잘 몰라도됨

Node.js

  • 노드는 백엔드에서만 사용되지 않음.
  • 리액트, 뷰 등 프론트엔드 프레임워크도 노드 기반임.
  • 노드는 자바스크립트를 스크립트 언어 이상으로 프로그래밍 언어 역할을 할 수 있도록 지원하는 플랫폼. 즉 웹 브라우저 밖에서도 자바스크립트를 사용할 수 있게 해준다.

Node.js의 특징

  • 싱글스레드: 한개의 스레드로 동작한다
  • 이벤트 기반: 요청이 들어와야만 일을 한다
  • 논블로킹 I/O: I/O 작업이 진행되는 동안 프로세스의 작업을 중단하지 않는다.

Non-Blocking

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

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

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

first();
setTimeout(second, 2000);
third();

위 코드를 실행해보자 절차지향적인 프로그래밍 언어에서는 "첫번째" 가 출력되고 2초 있다가 "두번째"가 출력될 것이라 생각할 것이다. 하지만 자바스크립트는 논 블로킹이라는 특징을 가지고 있고

"첫번째"
"세번째"
(2초 대기)
"두번째"

와 같은 식으로 출력된다.

모듈

이미 만들어져 있는 코드 덩어리. 어느만큼이 하나의 모듈일지는 자기 마음.

  • 내장 모듈: 기본으로 내장된 모듈. 그냥 사용할 수 있다.
  • 외부 모듈: 외부에서 가져와야 하는 모듈.

라이브러리 vs 프레임워크

라이브러리

  • 모듈이랑 같은 의미
  • 원하는 기능을 직접 찾아야함
  • Node.js 덕분에 자바스크립트 모듈을 만들고 사용할 수 있다.

프레임워크

  • 틀 안에서 일하는 것
  • 원하는 서비스를 만드는데 필요한 일을 틀 안에서 함
  • 프레임워크는 필요해보이는 라이브러리들을 미리 틀 안에 넣어둠

NPM

  • node를 사용하기 위해 필요한 패키지 관리자
  • 외부 모듈을 사용할 수 있게 해줌
  • 자바스크립트 모듈을 모아두고 제공함

    사용법

  • npm i(install) {패키지 이름}
  • npm uninstall {패키지 이름}
  • npm install {패키지 이름} -g -> 컴퓨터의 모든 프로젝트에 전역적으로 설치한다. 추천하지 않음.

Figlet

  • ASCII ART 를 제공하는 모듈

콜백함수

  • 함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달하는 것
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를 전달한다. 즉, 콜백함수이다.

템플릿 문자열

자바스크립트 ES6에서 업데이트로 나온 기능으로 문자열에서 변수명을 사용할 수 있다.

console.log(num1 + " x " + num2 + " = " + num3);
console.log(`${num1} x ${num2} = ${num3}`);

위 두 문장은 같은 결과를 출력하게 된다.

package.json

  • dependencies: 의존성, 사용할 것
  • package.json-lock: 모듈에 대한 더 자세한 정보가 적혀있음

후기

node.js의 특징과 패키지 관리자인 npm에 대해서 학습하였다. 또 모듈이 무엇인지, 라이브러리와 프레임워크의 차이가 무엇인지에 대해서도 학습하였다.

키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프