클라우드 스쿨/강의 정리

4주차 - Node.js

qqlzzb 2023. 11. 20. 10:24
기간 230530 - 230602
배운 내용 Node.js

 

◎ Node.js

1. const

const {변수} = 객체
하면 객체 안에 있는 변수를 찾아줌
변수 한 개면 중괄호 생략가능 const v = a

const status = candymachine // candymachine.getcandy.status과 동일

 

candymachine 객체 속 status 찾아줌

2. https

웹 서버에 SSL 암호화를 추가하는 모듈.

오고 가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채도 내용 확인 불가.

http 서버를 https 서버로 만들기 위해서는 인증서가 있어야 함. 내부적으로 키 가지고 암호화함


3. Express

http 모듈로 웹 서버를 만들 때 코드가 보기 좋지 않고, 확장성도 떨어지는 문제를 프레임워크로 해결.

대표적인 것이 Express, Koa, Hapi

-> 코드 관리도 용이하고 편의성이 높아짐

 

4. 미들웨어

익스프레스는 미들웨어로 구성됨

요청과 응답의 중간에 위치함

 

- dotenv

.env 파일을 읽어서 process.env로 만듦

포트번호와 같은 것들을 외부로 빼기 위함
dotenv는 .env 파일에 있는 것들 읽어와서 프로세스 객체로 만들어 줌

.env 파일에 비밀 키들을 모아두고 .env 파일만 잘 관리하면 됨

 

- morgan

서버로 들어온 요청과 응답을 기록해 줌

 

- static
정적인 파일들을 제공함

콘텐츠 요청 주소와 실제 콘텐츠의 경로를 다르게 만들 수 있음


- body-parser

요청의 본문을 해석해 줌

파라미터 파싱. 

폼 데이터나 AJAX 요청의 데이터 처리(요청 온 거 해석하기 좋게)

 

- cookie-parser

요청 헤더의 쿠키를 해석해 줌

실제 쿠키 옵션들을 넣을 수 있음

 

- express-session

세션 관리용 미들웨어

 

5. 멀티 스레드, 멀티 프로세스

스레드 - 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

프로세스 - 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원 공유하지 않음

 

멀티 스레드 - 하나의 프로세스에 여러 스레드. 메모리 공유
멀티 프로세스 - 프로세스끼리 메모리 공유하지 않음

멀티 스레드 - 호출 스택 여러 개 사용
싱글 스레드 - 호출 스택 하나

멀티 스레드는 동시에 처리하지 않고 왔다 갔다 하면서 처리


 es6

1. for

- for each
매개변수 2개이면 데이터와 인덱스 번호 전달
for 문과 달리 break가 안됨


- for in -> 객체의 속성을 다 꺼내보고 싶을 때


- for of 뒤에는 배열, 문자열 등 반복 가능한 객체 옴. 데이터 개수만큼 반복

2. map

foreach처럼 배열에 있는 거 하나씩 처리하지만
처리 결과가 배열

 

3. 프로미스

콜백함수 사용할 때 코드 깔끔하게 하기 위함

처리에 성공했을 때 실행할 함수와 성공하지 못했을 때 실행할 함수를 미리 약속

프로미스 사용하려면 Promise 객체를 만들어야 함

성공했을 때 실행할 함수 resolve()와 실패했을 때 실행할 함수 reject()도 함께 지정한다

 

4. async와 await

프로미스는 콜백 지옥이 생기지 않도록 소스를 읽기 쉽게 바꾼 것

프로미스 체이닝은 프로미스를 계속 연결해서 사용하므로 소스 복잡해질 수 있음

-> 이 문제 해결 위해 async 함수와 await 예약어 등장

async 예약어를 함께 사용하면 그 함수 안에 있는 명령을 비동기적으로 실행 가능

async function() {...}

await는 async 함수에서만 사용가능하고, 프로미스 체이닝을 좀 더 쉽게 작성하도록 함

'클라우드 스쿨 > 강의 정리' 카테고리의 다른 글

6주차 - JAVA  (0) 2023.11.22
5주차 - React  (0) 2023.11.21
3주차 - AWS, Node.js  (0) 2023.11.19
2주차 - CSS, JavaScript  (0) 2023.11.17
1주차 - HTML, CSS  (0) 2023.11.16