[ 논 블로킹 I/O ]
1. 이전 작업이 완료될 떄 까지 기다리지 않고, 다음 작업 수행
2. 오래걸리는 작업은 백그라운드에서 처리
[ 싱글 스레드 ]
- 스레드란 작업을 실행하는 단위
- 주어진 작업을 핸개의 스레드가 처리하는 것
- 주어진 작업을 혼자 처리하는 방식
- 스레드에 문제가 생길 시 전체에 문제가 생길 가능성 있음
- 메모리나 기타 자원을 효율적으로 사용 가능
[ 멀티스레드 ]
- 여러개의 스레드가 일을 나눠 처리
- 하나의 스레드가 문제 생겨도 다른 스레드로 대체 가능
- 스레드간의 작업 전환 비용, 놀고 있는 스레드 문제 발생
[Node.js 장점]
1. 싱글 스레드, 논블로킹 I/O에 따른 빠른 속도
2. 컴퓨터 자원을 덜 사용
3. I/O작업이 많은 서버로 적합(채팅, 스트리밍)
4. 자스를 사용하기에 프론트엔드 개발자 사용 용이
4. 생산성이 높음
[Node.js 단점 ]
1. 싱글 스레드 기반이라 자원을 많이 먹는 작업이 오면 부하가 크게 걸림
2. CPU 코어 한개만 사용 => CPU작업 많은 서버로 부적합 (게임서버)
3. 로직이 복잡한 경우 콜백함수의 늪에 빠질 수 있음
4. 에러가 발생하면 프로세스 자체가 죽음
[ Node.js 어울리는 서비스 ]
1. 간단한 로직으로 구성된 서비스
2. 빠른 응답시간 요구된 서비스
3. 빠른 개발이 요구된 서비스
4. 비동기방식에 어울리는 서비스 (채팅, 스트리밍)
스코프 - 변수에 접근할 수 있는 범위
비구조화 할당 - 객체 , 배열안의 값을 추출해서 변수, 상수에 바로 선언하는 문법
서버란?
네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 혹은 프로그램
웹 사이트를 클릭하거나 url을 통해 들어가려는 우리가 클라이언트이고 서버는 클라이언트의 요청에 대한 응답하는 것
로컬호스트localhost = 현재 컴퓨터의 내부 주소 = 127.0.0.1 (IP(Internet Protocol)
- 서버 개발할 때 테스트 용으로 많이 쓰인다.
port -> 서버내의 프로세스를 구분하는 번호
- 서버에서는 다양한 일을 처리한다(HTTP, DB 등등)
const http = require("http"); //http는 서버를 쉽게 구축하는 패키지
http
.createServer((req, res) => { //createServer 서버를 구축하기 위해 생성하고 콜백함수로 req, res를 받아서 요청과 응답 진행하는 함수
res.writeHead(200, { "Content-Type": "text/html" });
res.end("<p>Hello World~!!!</p>");
})
.listen(3000, () => { //listen 서버를 만들고 서버를 대기시킬 수 있는 함수
console.log("3000번 포트 서버 접속 완료!");
});
서버에 접속하는 코드

[ Postman ]
서버 개발 시 이를 테스트할 수 있는 툴
구글에 Postman다운로드 입력하고 다운로드 받기
[ API 서버 ]
요청을 받고 응답하는 서버
밑에는 API서버 만드는 코드
const http = require("http"); //http는 서버를 쉽게 구축하는 패키지
http
.createServer((req, res) => { //createServer 서버를 구축하기 위해 생성하고 콜백함수로 req, res를 받아서 요청과 응답 진행하는 함수
if(req.url === "/") {
res.writeHead(200); //응답 보냈을 때 정상이면 200번 잘못 들어갔을 때 400번
res.end("main url");
} else if (req.url === "/upload") {
res.writeHead(200);
res.end("upload url");
} else if (req.url === "/delete") {
res.writeHead(200);
res.end("delete url");
} else {
res.writeHead(404);
res.end("Not found!!!);
}
})
.listen(3000, () => { //listen 서버를 만들고 서버를 대기시킬 수 있는 함수
console.log("3000번 포트 서버 접속 완료!");
});
코드실행 시키고 postman으로 잘 작동하는지 확인하기 postman에 http://localhost.3000
http://localhost.3000/upload 입력하기
http 는 다른 개발자가 만들어 놓은 패키지를 사용하는 것 쉽고 효율적으로 개발 가능
자바스크립트에는 다양한 패키지가 있다
[ npm] node package manager
방대한 패키지를 모아서 설치/관리해주는 툴
Node.js로 만들어진 패키지를 설치하고 관리해주는 툴
[ 패키지 문제점 ]
패키지를 설치하다 보면 서로 의존되는 패키지들이 존재
패키지 버전마다 기능이 다를 수 있는 문제
설치한 패키지 버전을 관리해주는 파일 package.json
express 프로그램을 만들기 위한 기본 툴 프로그램을 만들기 위한 기본 툴
[ 기존] [express]
1. req.url 파싱 1. req.get('경로')
2. req.method 확인 2. req.query로 확인
3. 쿼리문 작성
express-generator는 express의 기본 구조를 만들어 줌