• Node

    • 브라우저 위에서만 동작하던 JS를 브라우저 없이 단독 프로그램으로 동작할 수 있게 해준 기적의 런타임
  • npm : Node Package Manager

  • JS ES6 대표 문법

    • const, let 변수

      • 기존의 var 선언 변수는 중복 선언 등에 대한 보호가 없음

        var a = 1;
        for(var i = 0; i < 10; i++){
        	var a = 2;
        }
        
        console.log(a);
        
        // 결과
        // a 변수가 for 내에서 재선언되고, 2로 할당되었으나,
        // for 이전에 선언된 외부의 a 변수에도 2가 저장됨
        
      • let 선언 변수는 중복 선언에 대한 보호가 추가되고, const 선언 변수는 값을 수정할 수 없는 상수 변수로 지정됨

        let a = 1;
        for(let i = 0; i < 10; i++){
        	let a = 2;
        }
        
        // 결과
        // for 내에서 a 변수가 재선언되면서,
        // 이미 존재하는 변수라는 오류가 나면서 동작하지 않음
        
    • 템플릿 리터럴

      • 기존의 문자열 포매팅 방식

        var month = 7;
        var word = "오늘은 " + month + "월 입니다.";
        
      • 새로운 문자열 포매팅 방식

        let month = 7;
        let word = `오늘은 ${month}월 입니다.`;
        
    • 화살표 함수

      • 고전적인 함수 선언 방식 : var 변수와 같이 재선언으로 덮어씌워질 수 있음

        function sum(a, b){
        	return a + b;
        }
        
      • 새로운 화살표 함수 선언 방식 : const 형식으로 선언되어 추후 수정이 불가한 변수로 취급

        const sum = (a, b) => {
        	return a + b;
        }
        
  • Node.JS 프로젝트 시작하기

    yong@ubuntu:~$ npm init
    
    • JS ES6 문법을 기본으로 하는 Node 프로젝트가 시작됨
    • package.json이 생성됨
  • (JS에서는 생략) Typescript 설치 및 적용하기

    yong@ubuntu:~$ npm install --save -g typescript
    yong@ubuntu:~$ tsc --init
    
    • Typescript 관련 설정을 담은 tsconfig.json이 생성됨

    • Typescript는 .ts 혹은 .tsx 확장자로 만든 파일에 작성

    • Typescript Compiler로 컴파일하고 나면 Javascript 파일로 변환되어 브라우저 혹은 Node에서 실행하는 방식

    • TSC 기본 명령

      yong@ubuntu:~$ tsc index.ts
      // 특정 TS파일을 컴파일
      
      yong@ubuntu:~$ tsc -p .
      // 현재 프로젝트 내의 모든 TS파일을 컴파일
      
    • package.json에 TSC 명령 적용하기

      "scripts": {
          "build": "tsc -p .",
          "start": "node index.js",
          "test": "echo \\"Error: no test specified\\" && exit 1"
        }
      
  • Express 라이브러리 설치 및 시작하기

    • Express : Node.JS에서 Back-End 프로그램을 개발하기 위한 기초 라이브러리

      yong@ubuntu:~$ npm install --save express
      (JS에서는 생략) yong@ubuntu:~$ npm install --save @types/express
      
      • Typescript를 사용할 경우, npm을 통해 어떤 라이브러리를 설치할 때 @types를 한번 더 정의해주어야, 해당 라이브러리의 Types 정보가 같이 설치되어 오류가 나지 않음
    • Express 기본 코드

      import express from "express";
      
      const app = express();
      
      app.get("/", (req, res) => {
          res.send("Hello, World!");
      });
      
      app.listen(8080, () => {
          console.log("Server is Listening on Port 8080!");
      });
      
  • HTTP 트랜잭션 : 서버와 클라이언트가 HTTP 메시지를 주고받음

    • 메서드 : 각각의 요청 메시지에 포함되는 동작 명령

      GET 서버에서 리소스를 가져오라
      PUT 클라이언트에서 보낸 리소스를 서버에 저장하라
      DELETE 클라이언트가 지정한 리소스를 서버에서 삭제하라
      POST 클라이언트에서 서버로 데이터를 보내라
      HEAD 지정한 리소스의 HTTP 헤더만 보내라
    • 상태 코드 : 각각의 응답 메시지에 포함되는 요청 결과값

      200 OK. 올바른 응답
      302 리소스가 다른곳으로 이동됨
      404 리소스를 찾을 수 없음
      500 서버 내부에서 기능적인 오류가 발생함
  • HTTP 함수

    1. HTTP 개관

    2. URL과 리소스