OS
-운영체제의 정보를 담고 있음.
-모듈은 require로 가져옴.(내장 모듈이라 경로 대신 이름만 적어줘도 된다.)
path
-폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈이다.
-운영체제별로 경로 구분자가 다르다. (Windows : ‘\’, POSIX: ‘/’)
-절대경로 : 가장 위에서부터 시작하는 경로
상대경로 : 현재 내 폴더부터 시작하는 경로 (. . 등을 이용하는 것이 상대경로)
url
-인터넷 주소를 쉽게 조작하도록 도와주는 모듈이다.
-url은 내장 객체여서 require 안 적어줘도 된다.
searchParams
dns
-DNS를 다룰 때 사용하는 모듈이다. 주로 도메인을 통해 IP나 기타 DNS정보를 얻고자 할 때 사용한다.
단방향 암호화 (crypto)
양방형 암호화
-key가 사용됨
-암호화할 때와 복호화 할 때 같은 key를 사용한다.
-프론트는 공개되어 있기 때문에 프론트에서 key가 노출되면 안된다.
util
-각종 편의 기능을 모아둔 모듈
스레드풀
-노드는 기본적으로 스레드를 4개만 돌린다.
커스텀이벤트
다양한 파일들 안에 있는 이벤트를 불러와 사용할 수 있다.
예외 : 처리하지 못한 에러
-노드 스레드를 멈춤.
-노드는 기본적으로 싱글 스레드라 스레드가 멈춘다는 것은 프로세스가 멈추는 것이다.
-에러 처리는 필수이다.
try catch
-에러가 발생할만한 곳을 try catch로 감싼다.
프로세스 에러는 따로 처리하지 않아도 된다.
-작동이 멈추지는 않고, 경고문만 출력된다.
-그러나, 나중에 문제가 발생했을 때를 고려해서 프로미스에 catch로 감싸주는 것이 좋다.
uncaughtException
-uncaughtException 함수를 쓰면 모든 에러가 uncaughtException에서 처리된다.
-최후의 수단으로 사용한다.
-콜백 함수의 동작이 보장되지 않는다.
-따라서 복구 작업용으로 쓰는 것은 부적합하기 때문에 에러 내용 기록으로만 쓰는 것이 좋다.
프로세스 종료하기
-윈도우
taskkill /pid 프로세스아이디/ f
-맥/리눅스
kill -9 프로세스아이디
+현재 프로세스 아이디는 process.pid 명령어를 통해 알아낼 수 있다.
화살표함수 (⇒)
-화살표 함수가 기존 function() {}을 대체하는 건 아님 (this가 달라짐)
화살표 함수는 무조건 부모의 this를 물려받지만, function을 사용하면 자신만의 this를 사용할 수 있기 때문에 완전히 대체할 수는 없다.
-객체를 리턴하는 경우에는 소괄호가 필수다.
프로미스
-내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체
-프로미스가 결과값을 갖고 있다가 나중에 결과값을 반환받을 수 있다. 즉, 코드를 분리할 수 있다는 것이 장점이다.
-콜백헬을 막을 수 있다.
async/await
-변수 = awiat 프로미스;인 경우 프로미스가 resolve된 값이 변수에 저장
-변수 await 값;인 경우 그 값이 변수에 저
-화살표 함수도 async/await 가능
-async 함수는 항상 promise를 반환
-사파리 같은 일부 브라우저가 html인지, 문자열인지 구분하지 못하기 때문에 코드에 써줘야 한다.
-fs로 파일 읽어오기
REST API
서버에 요청을 보낼 때는 주소를 통해 요청의 내용을 표현
-/index.html이면 index.html을 보내달라는 뜻이다.
-서버가 이해하기 쉬운 구조가 좋다.
-항상 html을 요구할 필요는 없다.
REST API
-서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법
-/user 이면 사용자 정보에 관한 정보를 요청하는 것이다.
-/post면 게시글에 관련된 지원을 요청하는 것이다.
HTTP 요청 메서드
-GET : 서버 자원을 가져오려고 할 때 사용
-POST : 서버에 자원을 새로 등록하고자 할 때 사용
-PUT : 전체 수정
-PATCH : 부분 수정
-DELETE : 서버의 자원을 삭제하고자 할 때 사용
HTTP 프로토콜
클라이언트가 누구든 서버와 HTTP 프로토콜로 소통 가능
RESTful
-REST API를 사용한 주소 체계를 이용하는 서버
-GET/user 는 사용자를 조회하는 요청, POST/user는 사용자를 등록하는 요청
-깔끔하고 의미전달만 잘되면 훌륭한 주소다.
-HTTP 상태코드 참조하기 (200, 201, 404, 503 등)
npm(Node Pacakage Manager)
-노드의 패키지 매니저
-다른 사람들이 만든 소스 코드들을 모아둔 저장소
-남의 코드를 사용하여 프로그래밍 가능
-이미 있는 기능을 다시 구현할 필요가 없어 효율적
-오픈 소스 생태계를 구성
package.json
npm 스크립트
-npm init이 완료되면 폴더에 package.json이 생성됨.
-npm run [스크립트명]으로 스크립트 실행
-app.set(’port’, 포트)로 서버가 실행될 포트 지정
-app.get(’주소’, 라우터)로 GET 요청이 올 때 어떤 동작을 할지 지
-app.listen(’포트’, 콜백)으로 몇 번 포트에서 서버를 실행할지 지정
-app.use(req, res, nest) ⇒ { }
-중복을 제거하기 위해 사용
-next를 써줘야만 다음 미들웨어로 넘어간다.
-와일드카드는 다른 미들웨어보다 아래에 위치해야 한다.
와일드카드가 위에 있으면 next를 쓰지 않을경우 다음으로 넘어가지 않음.
app use(err, req, res, next)
에러미들웨어의 경우 반드시 4개여야 한다.
서버쪽에서는 400번대 에러가 나도, 클라이언트에서는 200번대로 뜨게 할 수 있다.
하나의 요청에 여러번 응답을 보내면 에러가 난다.
잘 읽고 갑니다.~