ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데브코스] 16~18(예비군) 19일차 TIL
    TIL/교육 내용 정리 2024. 4. 26. 15:46

    HTTP에 담아 보내는 나의 목적(HTTP method)

    • 여기서는 method 메소드
    • HTTP = 규약 = 정해둔 용어가 있다.
    • 생성(=등록) : POST
    • 조회 : GET
    • 수정 : PUT(덮어쓰기;) / PATCH(일부수정; 바뀐것만 수정.)
    • 삭제 : DELETE
    • 아래는 데이터 외의 것들을 설정하는 것들
    • HEAD :
    • OPTIONS :
    • CONNECT :
    • TRACE :

    Node.js를 왜 알아야 할까?

    다양하게 쓰이기 때문이다.

    Node.js 는 백엔드에만 쓰이는 게 아니다.

    : 리엑트, 뷰 들이 Node.js 기반이다.,…. 프론트엔드

    Node.js 특징

    • 싱글 스레드 : 컴퓨터 프로세스가 동시에 하나의 작업만 처리할 수 있는 것 ex) 주방에 요리사가 한명임 주문이 계속 밀려들어와도, 한명이 어떻게든 쳐내야 해요.
    • 이벤트 기반 : ex) 주문이 없으면, 일을 안함. 주문이 들어와야만 일을 합니다.
    • 논블로킹 I/O : 요리를 순차적으로 x 중간중간 비는 시간이 있으면, 다른요리를 해요.

    → 라면 1개 (물 끓는 시간 5분 : 요리사는 그 물만 쳐다봐요), 볶음밥(완성 5분) so 라면 물 → 볶음밥 →라면

    cf. 스프링은요?

    • node = JS기반, spring =Java
    • spring = 프레임워크
    // non-blocking-demo.js
    function first(){
        console.log("첫 번째")
    }
    
    function second(){
        console.log("두 번째")
    }
    
    function third(){
        console.log("세 번째")
    }
    
    // 논블로킹 예시 
    first();
    setTimeout(second,2000);
    // 2초 뒤에 second 함수를 실행합니다.
    // 함수의 매개변수로 변수 또는 값을 전달하는 것이 아니라, 함수를 전달하는 것.
    // == "콜백 함수"
    third();
    
    // 논브로킹 예시 출력 결과
    첫 번째
    세 번째
    두 번째
    

    모듈이란?

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

    위 예시 코드처럼 setTimeout() : 기본적으로 제공하는 모듈 : 내장 모듈

    외부 모듈은 어떻게 사용하지

    • npm을 이용해서 외부 모듈을 사용

    Node.js 는 JS를 다른 곳 (vscode)에서 돌릴 수 있는 환경을 구축을 해줌.

    Node.js 덕분에 JS 모듈을 만들 수 있게 되었고, 사용도 할 수 있게 되었다.

    라이브러리(feat.프레임워크)

    도서관 : 분류 → 상세 주제(기준 : 출판사, 작가, 내용,…)

    • 장점 : 내가 원하는 걸 빌릴 수 있다.
    • 단점 : 너무 많아서 고르기 힘들고, 찾는 시간이 오래 걸릴 수 있음.

    = 라이브러리 = 모듈

    cf.프레임 워크 : 내가 만들고 싶은 서비스를 구현하는 데 필요한 모든 일을 틀 안에서 하는 것.

    (프레임 워크는, 필요해 보이는 라이브러리(모듈)를 미리 다 틀 안에 넣어뒀습니다.)

    npm, figlet 사용해보기

    1. npm 사이트 접속
    2. 터미널에서 npm i figlet
    3. 코드 복사 붙여넣기 후 실행
    var figlet = require("figlet");
    
    figlet("Hey", function (err, data) {
        // 익명의 함수를 쓰는 이유 = 이 함수를 쓸 일이 다른 데는 없어서..
        // figlet 만든 사람이, 매개변수로 함수를 받기로 했기 때문
    
        // 첫 번째 매개변수 "Hey"라는 문자열을 받아서,
        // 아스키 아트를 만든 다음에 
        // 두 번째 매개변수 function 함수를 실행 = 콜 백
    
      if (err) {
        console.log("Something went wrong...");
        console.dir(err);
        return;
      }
      console.log(data);
    });
    
    • require : 외부 모듈을 가져올 때, 쓰는 내장 모듈

    http 모듈 뜯어보면서 콜백함수 다시 확인하기

    (let, const 중괄호 스코프 포함)

    // scope-demo.js
    if(true){
        var num1 =7;
        const num2 =3;  //블록 {} 스코프 
        let num3 = 5;   //블록 {} 스코프 선언된 중괄호 밖에서는 사용 불가.
    }
    
    console.log(num1);
    console.log(num2);
    console.log(num3);
    
    • let 과 const 는 블록{} 스코프 : 선언된 중괄호 밖에서 사용 불가. = ‘지역 변수’지 ‘전역 변수’가 아니다.

    let, const 값 변경

    if(true){
        var num1 =7;
        const num2 =3;  //블록 {} 스코프 초기화 이후 값 변경 x 
        let num3 = 5;   //블록 {} 스코프 선언된 중괄호 밖에서는 사용 불가.
    
        num2 = 10;
        num3 = 21;
    }
    
    console.log(num1);
    console.log(num2);
    console.log(num3);
    
    • const는 한번 값을 넣으면 값을 변경할 수 없다.

    템플릿 문자열

    console.log(num1 + "X" + num2 + " = " + num3);
    console.log(`${num1}X${num2} = ${num3}`);
    
    • 둘 다 가능.
    // server-demo.js
    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 삭제하기 
    npm install figlet
    
    // package.json
    
    // dependencies : 사용할 것. 
    
    // -g 전역에 설치 하겠다. 추천하지 않는다. 
    npm install -g figlet-cli
    
    • npm은 외부 모듈을 내 프로젝트에 설치할 수 있게 도와주는 친구
    • npm이 저장소에 ‘외부 모듈’을 설치를 우리가 원하는 프로젝트에 자동으로 해준다. = 프로그램설치 파일 다운로드 받아서 더블 클릭 = npm install 모듈
Designed by Tistory.