[부트캠프] 백엔드-nodeJS 2일차

RedPanda·2022년 8월 10일
0

NodeJS

목록 보기
2/11

필기내용

내장객체

  • global

  • __filename : 현재파일 경로 + 이름

  • __dirname : 현재폴더 경로 + 이름

  • process : 현재 작동하는 nodeJS의 프로세스에 대한 정보 (ex. 버전, 업타임...)

  • process.nextTick() : 가장 우선적으로 실행되는 프로세스의 비동기 함수

  • process.exit() : 프로세스를 종료시키는 함수

모듈

  • 각 모듈은 require('모듈이름') 으로 불러온다.

OS 모듈

  • nodeJS가 실행되는 운영체제의 환경을 확인할 수 있음.

  • 웹브라우저에서는 사용이 불가 -> 운영체제에 접근할 수 없다.

PATH 모듈

  • 폴더 또는 파일의 경로를 조작할 수 있음.

URL 모듈

  • 인터넷의 주로를 쉽게 조작할 수 있음 -> 링크의 분해가 가능

  • url.parse(adress) : 주소를 분해함

  • url.foramt(object) : 주소를 분해하나 WHATWG

queryString 모듈

  • 노드 url의 검색 부분

  • parse : query부분을 객체로 분해

  • stringify : 분해한 객체를 문자열로 조립

crypto 모듈

  • 암호화시켜주는 모듈

  • createHash : 단방향 암호화로, 찾기만 가능하고 string으로 되돌릴 수는 없음
    -> crypto.createHash(알고리즘).update(비밀번호).digest(인코딩) : 비밀번호를 해시화하여 되돌릴 수 없게 함 (암호화)

  • createCipheriv(algorithm, key, iv) : 양방향 암호화. 복호화가 가능하다.

fs 모듈

  • 파일 경로를 확인할 수 있으며, promise를 지원하여 비동기적으로 사용이 가능 (require('fs').promise;)

  • writeFile(filename, 내용) : 해당 위치에 파일이 없으면 만들어서 쓰기 사용

  • readFile(filename) : 해당 위치의 파일을 읽어들임
    (promise를 사용하지 않으면 콜백함수를 사용해야 함)
    -> 순서를 정하려면 then으로 순서를 보장시킬 수 있음.

동기/비동기, 블로킹/논블로킹
-동기와 블로킹, 비동기와 논블로킹이 서로 비슷한 맥락
-동기와 논블로킹의 조합 : 서로 논블로킹으로 처리는 했지만 다음 순서를 위해 동기로 기다리는 것

  • readFileSync(filename) : 비동기 함수인 readFile을 동기로 바꿔줌
    -> 모듈을 불러올 때, promise로 불러오면 'TypeError: fs.readFileSync is not a function'가 뜨게 된다. 그냥 불러와주던지 다른 변수에 넣어주자.

버퍼

  • 비동기 함수는 버퍼로 리턴된다. (데이터를 버퍼에 청크 형태로 쌓아두고 다차면 전송)

  • Buffer.String(buffer) : 버퍼를 문자열로 바꾸는 방법

  • Buffer.from(str) : 문자열을 버퍼로 바꾸기 위해 필요하다.(백틱으로 포멧하면 버퍼가 아니라 문자열로 나온다)

  • Buffer.alloc(num) : num 길이만큼의 버퍼를 생성한다.

  • Buffer.length() : 버퍼의 길이를 리턴한다.

스트림

  • 데이터를 버퍼에 쌓아두지 않고 계속 전달해줌.

  • createReadStream(adress, {highWaterMark : n}) : n바이트씩 잘라서 stream에 입력

  • readStream.on("data, end, err", callback) : 스트림에서 데이터를 읽을때마다 data를 실행, 에러가 나면 err 실행, 끝나면 end를 실행. 각각은 callback를 실행하게 된다.
    -> callback의 argument는 chunk이다.

  • createWriteStream(adress) : 파일에 stream 형식으로 쓰기 작업을 함.

  • writeStream.write(), end() : 쓰기와 끝내기

  • writeStream.on('finish', callback) : 쓰기가 끝나면 callback 호출

폴더 접근 및 생성...

  • fs.access(adress, F_OK | W_OK | R_OK) : 읽기, 쓰기, 접근에 대해 성공 여부를 결정
    -> 이하의 함수에 대해 .then으로 연결시킴

  • fs.mkdir(adress) : adress에 폴더를 추가

  • fs.open(adress, 'w,r...') : w는 쓰기, r는 읽기 형식으로 주소의 파일을 열음

  • fs,rename(adress, new_adress) : 새것으로 교체

  • error : ENONET 는 파일의 경로가 잘못됨, ENOFILE은 파일이 잘못됨

  • fs.readdir : 폴더의 내용 확인

  • fs.unlink : 파일 삭제

  • fs.rmdir : 폴더 삭제
    -> 프로미스는 체인을 걸어 사용하게 되면 then 내부에서 return을 꼭 해주어야 한다.

  • fs.copyfile(= pipe) : 파일 복사

profile
끄적끄적 코딩일기

0개의 댓글